Javascript RegExp字符串模式

时间:2010-01-08 18:49:26

标签: javascript

我需要检查JS匹配动态生成的字符串。

for(i=0; i< arr.length; i++)
{
 pattern_1="/part of "+arr[i]+" string!/i";

 if( string.search(pattern_1) != -1)
  arr_num[i]++;

}

然而,这段代码不起作用 - 我假设由于引号。我该怎么做?

非常感谢。

3 个答案:

答案 0 :(得分:7)

/pattern/文字只能用作文字。不在字符串中。

如果要使用字符串模式创建正则表达式,则需要创建一个新的RegExp对象:

var re = new RegExp(pattern_1)

在这种情况下,你会省略封闭的前缀(/)。这两行是等价的:

var re = /abc/g;
var re = new RegExp("abc", "g");

答案 1 :(得分:1)

问题是您将字符串传递给search函数,因此它将其视为字符串。尝试使用如下的RegExp对象:

myregexp = new RegExp("part of " + arr[i] + " string!", "i")
if (string.search(myregexp) != -1) {
   arr_num[i]++;
}

答案 2 :(得分:1)

试试这个:

// note you dont need those "/" and that "i" modifier is sent as second argument
pattern_1= new RegExp("part of "+arr[i]+" string!", "i");