我需要确保指定的character(@
)连续重复不超过一次.它可以多次出现,但只能作为单个@
字符出现,而不是@@
更多.捕获组是不必要的.
这些字符串应匹配:
foobar @foobar foo@bar foo@bar@baz
这些字符串不应匹配:
@@foobar foo@@bar foo@bar@@baz
该引擎支持前瞻和后视.
我试着做(?了整整1次的重复,但
((?还是
(?很明显的供0或1的重复将无法正常工作.
如何处理这种情况?
没有任何先行支持你可以使用这个否定的字符类正则表达式:
^[^@]*(?:@[^@]+)*$
哪里[^@]
匹配任何不符合的东西@
.
RegEx演示
如果你在正则表达式中有先行支持,那么使用更简单的正则表达式:
^(?!.*@@).*$
(?!.*@@)
消极正则表达式在哪里禁止@@
字符串中的任何地方.
RegEx演示2