我正在尝试查找给定的数字字符串是否包含三个相同数字的序列。
使用 for 循环,字符串中的每个数字都会获得自己的三位数序列表示,然后使用正则表达式对照字符串进行检查:
var str = "6854777322"
for(var i=0; i<str.length; i++)
{
seqToCompare = str[i] + str[i] + str[i];
var re = new RegExp(seqToCompare, "g");
if(str.match(re).length == 1)
{
match = str[i];
}
}
console.log(match)
结果应该是 7(如果我将 777 放入 seqToCompare 中,它会起作用),但看起来串联导致它失败。控制台显示“无法读取 null 的属性长度”。
您可以在这里测试 - https://jsfiddle.net/kwnL7vLs/
我尝试了.toString,以正则表达式格式设置seqToCompare,甚至将其解析为int(出于不知道该怎么办的绝望......)
最佳答案
您可以使用简单的正则表达式来获取重复 3 次的数字,而不是循环遍历每个字符:
/(\d)(?=\1{2})/
(\d)
- 这里我们匹配一个数字并将其分组到捕获的组 #1(?=\1{2})
是前瞻,断言相同的捕获组 #1 在当前位置之前重复两次
关于Javascript - 在正则表达式中使用连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820876/