我想匹配在JavaScript末尾具有精确n个重复数字的数字。但是,我的正则表达式最后匹配n个或n个以上的数字,我似乎无法解决。
即n = 3,匹配以下内容:
12333
222
1233334333
不符合以下条件:
11
12344
122233
123333
我的正则表达式(不起作用):
(\d)\1{2}$
[^\1](\d)\1{2}$
(\d){3}(?!\1)$
答案 0 :(得分:3)
尝试此操作-在重复数字开始之前匹配该数字,为该数字使用负前瞻,然后匹配3个重复数字:
const dbHost = 'mongodb://${docker_host_ip}:27017/';
答案 1 :(得分:0)
确保后面没有数字:
/[^1]1{3}$|[^2]2{3}$|[^3]3{3}$|.../gm
其中...
表示每个数字重复一次。您可以很容易地使用循环来生成该表达式,并且如果愿意,可以使用负数来查找第一个非系列数字。
答案 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>