0

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

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

如何在正则表达式中表达?

4

3 回答 3

8

负向后看是最适合这个的。

[A-GZ]{2}(?<!GB)(?<!ZZ)

解释:

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

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

于 2010-06-22T19:39:04.477 回答
3
^([A-F][A-GZ]|G[AC-GZ]|Z[A-G]).*
于 2010-06-22T19:35:31.457 回答
0

^([AF][A-GZ]|G[AC-GZ]|Z[AG])

于 2010-06-22T19:41:07.180 回答