正则表达式无法阻止使用I,V,X和SR / JR组成的后缀名称匹配

问题描述 投票:0回答:1

我试图阻止包含后缀名称,例如,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'

这两个我无法调试。请建议我在这个正则表达式的哪个部分我可以进行更改以满足要求。

谢谢!

regex regex-lookarounds
1个回答
2
投票

尝试这种模式:.+\b(?:(?>[JS]R)|X|I|J|V)+$

说明:

.+ - 匹配任何一个或多个字符

qazxsw poi - 词边界

\b - 非捕获组

(?:...) - 原子团

(?>...) - 匹配[JS]RS后跟J

R - 交替:匹配左边的内容或右边的内容

qazxsw poi - 量词:在模式之前匹配一次或多次

| - 匹配字符串的结尾

+

© www.soinside.com 2019 - 2024. All rights reserved.