首页 > 解决方案 > 如何在 string.match 中添加循环值?

问题描述

如何遍历字符串并将其值添加到匹配方法中的正则表达式中。我越来越空了。试过了 /'str[i]'/g,它也给出了null。

var str = "helloWorld";
var regResult;

for (var i = 0; i < str.length; i++) {
  regResult = str.match(/str[i]/g); //gives null
};

标签: javascriptarraysregexloops

解决方案


现在您的正则表达式正在匹配str范围内的单个字符i- 一个i,表示它将匹配stri。要匹配变量i,请尝试以下操作:

var str = "helloWorld";
var regResult;

for (var i = 0; i < str.length; i++) {
  regResult = str.match(new RegExp('str' + i, 'g')); //gives null
};

在这里,我们正在创建一个正则表达式,其模式包含变量的当前值i。例如,如果i是 4,那么将构造正则表达式,就好像您只是简单地给/str4/gstr.match.

编辑

为了反映对问题所做的编辑,我提出的新解决方案如下:

var str = "helloWorld";
var regResult;

for (var i = 0; i < str.length; i++) {
  regResult = str.match(new RegExp(str[i], 'g')); //gives null
};

此代码与上述代码的不同之处在于它i从读取值str。例如,如果i是 4 和str[4] = "h",那么正则表达式将被构造,就好像您只是给了str[4]to str.match:的值一样str.match(/h/g)


推荐阅读