我试图阻止包含后缀名称,例如,JR
/ SR
,或使用正则表达式方式使用I,V,X
组成的其他后缀。为此,我实现了以下正则表达式
((^((?!((\b((I+))\b)|(\b(V+)\b)|(\b(X+)\b)|\b(IV)\b|(\b(V?I){1,2}\b)|(\b(IX)\b)|(\bX[I|IX]{1,2}\b)|(\bX|X+[V|VI]{1,2}\b)|(\b(JR)\b)|(\b(SR)\b))).)*$))
使用这个我能够防止各种可能的组合,例如,'姓氏I','姓氏II','姓氏IJR','姓氏SRX'等。
但是,仍然存在几种组合,这种正则表达式可以匹配。例如,'姓氏IXV'或'姓氏VXI'
这两个我无法调试。请建议我在这个正则表达式的哪个部分我可以进行更改以满足要求。
谢谢!
尝试这种模式:.+\b(?:(?>[JS]R)|X|I|J|V)+$
说明:
.+
- 匹配任何一个或多个字符
qazxsw poi - 词边界
\b
- 非捕获组
(?:...)
- 原子团
(?>...)
- 匹配[JS]R
或S
后跟J
R
- 交替:匹配左边的内容或右边的内容
qazxsw poi - 量词:在模式之前匹配一次或多次
|
- 匹配字符串的结尾
+