我有以下正则表达式^(?!0{8})
,它应匹配任何不是8个零的字符串。我不明白为什么这不起作用。即,12345678不匹配。
我需要使用正则表达式,因为我在@Pattern
注释中使用它,所以我不能只进行相等检查。
我在这个网站上https://regex101.com/进行了测试,看起来很不错。
有什么想法吗?
答案 0 :(得分:2)
你的正则表达式犯了一些错误。检查字符串是否只包含8个零。 (根据您的问题,这是您要避免的)可以使用正则表达式"^(0{8})$"
完成。如果一行中有8个零,则此正则表达式将返回true,这是字符串中的唯一内容。 ^
匹配开头和
$
匹配结尾。
您可以使用java来否定结果。
String s = "123456789";
System.out.println(!s.matches("^(0{8})$"));
答案 1 :(得分:2)
您的前瞻缺少字符串锚点的$
结束,并且不允许匹配任何以 8个零开头的字符串。
您需要使用
^(?!0{8}$)
^
或 - 如果注释模式必须与整个字符串匹配:
^(?!0{8}$).*$