【问题标题】:Match a repeating digit (the same one) exactly two times in Javascript with RegEx使用 RegEx 在 Javascript 中将重复数字(相同的数字)精确匹配两次
【发布时间】:2017-03-06 09:46:26
【问题描述】:

我目前正在尝试匹配一个重复的数字,到目前为止我得到了这个:

pattern = /(\d){2}/

但是当我用任何长度 >= 2 的数字测试这个模式时,它会返回 true。我想找到的是以下内容: 当我测试数字 12344 时,它应该返回 true,如果数字是 12345,它应该返回 false。但是有一个数字 12444 也应该返回 false。我想找到完全相同的数字重复两次。

编辑:感谢任何提出解决方案的人!

【问题讨论】:

  • 你必须考虑单词边界,甚至可能确保选择前后的字符不是数字
  • 对于像11222 这样的数字,输出应该是true 还是false
  • @evolutionxbox,不太好,因为我总是会测试一个数字,而不是一个包含单词和/或数字混合的字符串
  • @Rawing ha... 棘手。我什至没有想到这一点。在这种情况下,它仍然应该返回 true。我标记为解决方案的答案正是如此。
  • @kidman01 你也只计算连续重复的数字,对吧?所以1213 不会匹配,尽管1 重复了?

标签: javascript regex


【解决方案1】:

对于此类任务,您必须使用环视和反向引用:

(?:^|(.)(?!\1))(\d)\2(?!\2)

解释:

(?:         // match either...
    ^       // start of the string
|           // or...
    (.)     // any character
    (?!\1)  // not followed by the exact same character
)
(\d)        // then, match and capture a digit
\2          // and the same digit a 2nd time
(?!\2)      // and assert the digit doesn't show up a 3rd time

【讨论】:

  • 谢谢!像我期望的那样工作。我只需要了解这里真正发生的事情:D
【解决方案2】:
/(00|11|22|33|44|55|66|77|88|99)/

【讨论】:

  • 但是有 12444 的数字也应该返回 false。
猜你喜欢
  • 2017-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
相关资源
最近更新 更多