数字列表的 Java Regex 验证

标签 java regex

我是 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/

相关文章:

java - 看似随机的 SAX 输出错误

java - 组织数据的最佳方式: variable number of specific datapoints

JavaScript 正则表达式(exp)?问题

regex - 如何使用 Visual Studio Code 正则表达式匹配行的开头?

asp.net - 末尾接受多次 (.com) 的电子邮件 ID

Java将二进制字符串转换为十进制

java - 获取排序的 TableModel

java - 灰度图像到矩阵和矩阵到灰度图像

javascript - html 整洁和 javascript 正则表达式

java - 在Android中替换字符串中的特殊字符