REGEX 检查数字是否在字符串中重复

REGEX to check if a number is repeated in a string

我需要一个正则表达式来检查一个数字是否在 9 个字符的字符串中重复,因为这些字符可能是不定数量的点

例子

"........." - false - no numbers repeated
"123456789" - false - no numbers repeated
"1.2.3.4.5" - false - no numbers repeated
"1...3...5" - false - no numbers repeated
"112345678" - true - number 1 is repeated
"1......1." - true - number 1 is repeated
"11244.56." - true - number 1 and 4 are repeated
"234.5.6.4" - true - number 4 is repeated

我在互联网上四处寻找这个接近我需要的东西

\b(?:([1-9])(?![1-9]*)){1,9}\b

但我不知道如何让它不考虑点 非常感谢:)

此正则表达式将允许重复数字之间的任何字符:

(\d).*

\d 匹配一个数字,() 将其放入捕获组 1,反向引用 匹配相同的数字。

您可以使用

^(?=.{9}$)(?=.*(\d).*)(?:\.*\d){1,9}\.*$

或者,如果您只需要允许从 19 的数字:

^(?=.{9}$)(?=.*([1-9]).*)(?:\.*[1-9]){1,9}\.*$

参见this regex demo

详情:

  • ^ - 字符串开头
  • (?=.{9}$) - 字符串应包含 9 个字符
  • (?=.*(\d).*) - 必须有一个重复数字
  • (?:\.*\d){1,9}\.* - 出现 1 到 9 次任何零个或多个点后跟一个数字,然后是任何零个或多个点
  • $ - 字符串结尾。