正则表达式。开始但不等于

时间:2010-06-22 19:33:13

标签: c# .net regex regex-negation

我有一个需要验证的字符串。

前两个字符必须由A-G或Z组成,但不能是以下组合:GB或ZZ。

我如何用正则表达式表达它?

3 个答案:

答案 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])