Javascript - 在正则表达式中使用连接字符串

标签 javascript regex

我正在尝试查找给定的数字字符串是否包含三个相同数字的序列。

使用 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 在当前位置之前重复两次

RegEx Demo

关于Javascript - 在正则表达式中使用连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40820876/

相关文章:

java - 确定字符串中是否只有一组已定义的字符

javascript - 将 JavaScript 正则表达式转换为 java

regex - 正则表达式。查找所有 int 并替换为 double

javascript - 如何使用匹配函数在jquery中将变量添加到 'classname'?

javascript - 用于注册新用户的 Jquery 警报框

ios - NSRegularExpression

javascript - 为什么量词不起作用

javascript - GJS同步读取文件

javascript - WebRTC:获取 mediaStream 的音频级别*无需*播放音频

javascript - 使用参数创建函数搜索对象数组