我想要一个与以下模式匹配的正则表达式
目前我已经开发了这种模式
[^I,O,S,Z,i,o,s,z][0-9A-Za-z]{2}[AA|TN|TP]{2}
但它考虑到AI2AT
不应该这样做。
答案 0 :(得分:2)
您可以使用
/^[0-9A-HJ-NP-RT-Y][A-Z0-9]{2}(?:BB|KA|JQ)$/i
或
/^[0-9A-Ha-hJ-Nj-nP-Rp-rT-Yt-y][A-Z0-9]{2}(?:BB|KA|JQ)$/
请参阅regex demo
如果您可以使用前瞻,则可以使用
/^(?![IOSZiosz])[A-Za-z][A-Za-z0-9]{2}(?:BB|KA|JQ)$/
您当前的[^I,O,S,Z,i,o,s,z][0-9A-Za-z]{2}[AA|TN|TP]{2}
表达式实际上不检查字符串的开头/结尾,[^I,O,S,Z,i,o,s,z]
否定的字符类匹配任何字符,但I
,,
,{{1 }等等,O
字符类与[AA|TN|TP]{2}
,A
,|
,T
,N
匹配两次。
所以,
P
[0-9A-HJ-NP-RT-Y]
的非捕获组 (?:...)
而不是最后一个字符类(在内部被视为文字符号|
|
个字符类)[...]
否定前瞻会限制通用的字母数字(?![IOSZiosz])
模式,使其无法与[A-Za-z0-9]
,I
,{{1 }},i
,o
,O
,S
或s
。答案 1 :(得分:0)
试试这个:
(?!I,O,S,Z,i,o,s,z)[0-9A-Za-z][0-9A-Za-z]{2}(BB|KA|JQ){2}