我有一个需要验证的字符串。
前两个字符必须由 AG 或 Z 组成,但不能为以下组合:GB 或 ZZ。
如何在正则表达式中表达?
负向后看是最适合这个的。
[A-GZ]{2}(?<!GB)(?<!ZZ)
解释:
[A-GZ]{2}
恰好匹配两个字符,这两个字符都必须是 AG 或 Z。
(?<!GB)
仅当匹配的前两个字符不是 GB 时才匹配。
(?<!ZZ)
仅当匹配的前两个字符不是 ZZ 时才匹配。
与所有前瞻和后瞻操作一样,负后瞻操作的宽度为零,这意味着它不会更改光标位置。这就是为什么你可以像我一样将两个连续串在一起。我比 | 更喜欢这个,因为它清楚地表明了不允许的两种情况。并且执行两次应该具有与 | 相同的运行时效果。操作员在一次回顾中。
^([A-F][A-GZ]|G[AC-GZ]|Z[A-G]).*
^([AF][A-GZ]|G[AC-GZ]|Z[AG])