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

iBi*_*kov 0 .net c# regex regex-negation

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

前两个字符必须由AG或Z组成,但不能是以下组合:GB或ZZ.

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

jdm*_*hal 8

负面观察是最适合这种情况的.

[A-GZ]{2}(?<!GB)(?<!ZZ)
Run Code Online (Sandbox Code Playgroud)

说明:

[A-GZ]{2}恰好匹配两个字符,两个字符必须是AG或Z.
(?<!GB)仅匹配前两个匹配的字符不是GB.
(?<!ZZ)仅匹配前两个匹配的字符不是ZZ.

像所有前瞻和后观操作一样,负面的后视是零宽度,这意味着它不会改变光标位置.这就是为什么你可以像我一样连续两个串起来.我比这更喜欢这个,因为它清楚地说明了两个不允许的情况.两次执行它应该具有与|相同的运行时效果 操作员在一个单一的外观.

  • 而且还有正则表达式风格的罕见功能之一(例如在JavaScript中不起作用).负面前瞻得到更广泛的支持并且同样简单:`^(?!GB)(?!ZZ)[A-GZ] {2}` - 还添加了`^`因为他指定了"前两个字符" (4认同)