我试图查找给定的数字字符串是否包含三个相同数字的序列。
使用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中,它会起作用),但看起来连接会导致它失败。控制台显示&#34;无法读取null&#34;的属性长度。
您可以在此处进行测试 - https://jsfiddle.net/kwnL7vLs/
我尝试了.toString,设置了Regex格式的seqToCompare,甚至将其解析为int(因为不知道该做什么而绝望......)
答案 0 :(得分:3)
您可以使用简单的正则表达式来获取重复3次的数字,而不是遍历每个字符:
/(\d)(?=\1{2})/
(\d)
- 这里我们匹配一个数字并将其分组到捕获的组#1 (?=\1{2})
是先行,断言相同的捕获组#1在当前位置之前重复两次答案 1 :(得分:0)
length
的{{1}}属性,即使不匹配也是如此找到了。
请改为尝试:
str.match()