我有一个需要验证的字符串。
前两个字符必须由A-G或Z组成,但不能是以下组合:GB或ZZ。
我如何用正则表达式表达它?
答案 0 :(得分:8)
负面观察最适合这种情况。
[A-GZ]{2}(?<!GB)(?<!ZZ)
说明:
[A-GZ]{2}
恰好匹配两个字符,两个字符必须是A-G或Z.
如果匹配的前两个字符不是GB,则(?<!GB)
仅匹配
(?<!ZZ)
仅匹配前两个匹配的字符不是ZZ。
与所有前瞻和后视操作一样,负面的后视是零宽度,这意味着它不会改变光标位置。这就是为什么你可以像我一样连续两个串起来。我比这更喜欢这个,因为它清楚地说明了两个不允许的情况。两次执行它应该具有与|相同的运行时效果单一的后视操作员。
答案 1 :(得分:3)
^([A-F][A-GZ]|G[AC-GZ]|Z[A-G]).*
答案 2 :(得分:0)
^([A-F] [A-GZ] | G [AC-GZ] | Z [A-G])