繁体   English   中英

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

[英]RegEx match numbers which have n repeating digits at the end

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

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

我的正则表达式(无效):
(\\d)\\1{2}$ [^\\1](\\d)\\1{2}$ (\\d){3}(?!\\1)$

尝试以下操作-在重复数字开始之前正确匹配数字,对数字使用负前瞻,然后匹配3个重复数字:

 const strs = [ '12333', '222', '1233334333', '11', '12344', '123333']; const re = /(^|(\\d)(?!\\2))(\\d)\\3{2}$/; strs.forEach(str => { if (re.test(str)) console.log('pass ' + str); }); 

确保后面没有数字:

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

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

摆弄

虽然此表达式几乎可以解决您需要的问题(它为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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM