RegEx匹配数字的末尾有n个重复数字

时间:2018-06-30 09:48:17

标签: javascript regex

我想匹配在JavaScript末尾具有精确n个重复数字的数字。但是,我的正则表达式最后匹配n个或n个以上的数字,我似乎无法解决。
即n = 3,匹配以下内容: 12333 222 1233334333

不符合以下条件: 11 12344 122233 123333

我的正则表达式(不起作用):
(\d)\1{2}$ [^\1](\d)\1{2}$ (\d){3}(?!\1)$

3 个答案:

答案 0 :(得分:3)

尝试此操作-在重复数字开始之前匹配该数字,为该数字使用负前瞻,然后匹配3个重复数字:

const dbHost = 'mongodb://${docker_host_ip}:27017/';

答案 1 :(得分:0)

确保后面没有数字:

/[^1]1{3}$|[^2]2{3}$|[^3]3{3}$|.../gm

其中...表示每个数字重复一次。您可以很容易地使用循环来生成该表达式,并且如果愿意,可以使用负数来查找第一个非系列数字。

fiddle

答案 2 :(得分:0)

尽管此表达式几乎可以解决您需要的问题(它为4个或更多重复提供假阳性结果),也许也可以解决此问题……我建议不使用或仅使用正则表达式来解决此问题。可能是[0-9] {n},并且是精确的重复检查,并且字符串上有向后循环。

let re= /1{3}$|2{3}$|3{3}$|4{3}$|5{3}$|6{3}$|7{3}$|8{3}$|9{3}$|0{3}$/;

var div = document.getElementById('out');

div.innerHTML += "12333".match(re)+" -- <br/>"
div.innerHTML += "222".match(re) +" -- <br/>"
div.innerHTML += "1233334333".match(re) +" -- <br/>"

// Not match these:
div.innerHTML += "11".match(re) +" -- <br/>"
div.innerHTML += "12344".match(re) +" -- <br/>"
div.innerHTML += "122233".match(re)+" -- <br/>"
div.innerHTML += "123333".match(re)+" -- <br/>"
<div id=out></div>