我是 Java 正则表达式的新手。我正在为这一系列的数字检查寻求建议:
数字,必须>=10位,不允许用户输入如下:
"0000000000","1111111111","2222222222","3333333333","4444444444",
"5555555555","6666666666","7777777777","8888888888","9999999999",
"1234567890","00000000000","11111111111","22222222222","33333333333",
"44444444444","55555555555","66666666666","77777777777","88888888888",
"99999999999"
目前我的正则表达式模式是这样的
^(?=\\d{8,11}$)(?:(.)\\1*)$
这会验证系列中除 1234567890
之外的所有数字。任何建议表示赞赏。谢谢。
最佳答案
使用这个:
^(?!(\d)\1+\b|1234567890)\d{10,}$
查看 the Regex Demo 中匹配和失败的内容。
要在 Java 中进行验证,使用匹配
我们不需要 anchor :
if (subjectString.matches("(?!(\\d)\\1+\\b|1234567890)\\d{10,}")) {
// It matched!
}
else { // nah, it didn't match...
}
解释
- 否定先行
(?!(\d)\1+\b|1234567890)
断言接下来的内容不是... (\d)\1+\b
一个数字(捕获到第 1 组),后面是与第 1 组匹配的内容的重复,然后是单词边界- 或
|
1234567890
\d{10,}
匹配十个或更多数字
关于数字列表的 Java Regex 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946708/