2010-01-08 78 views
3

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

即。

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

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

} 

但是,这段代码不起作用 - 我推测是由于引号引起的。我该怎么做呢?

非常感谢。

+0

什么是你想匹配?你是正确的,但如果你需要动态地创建正则表达式,你将需要使用新的'RegExp(“string”);'。 – 2010-01-08 18:54:57

回答

7

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

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

var re = new RegExp(pattern_1) 

而且在这种情况下,你会忽略封闭frontslashes(/)。这两条线是相同的:

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

谢谢,解决了问题=) – Rohan 2010-01-08 19:12:04

+0

@Rohan,那么你应该接受答案。在投票数下面点击该复选标记。 – Triptych 2010-01-08 19:12:49

+0

啊,完成了。我是新来的:D – Rohan 2010-01-08 19:19:14

1

的问题是要传递一个字符串search功能,因此它把它作为一个字符串。尝试使用RegExp对象,像这样:

myregexp = new RegExp("part of " + arr[i] + " string!", "i") 
if (string.search(myregexp) != -1) { 
    arr_num[i]++; 
} 
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"); 
相关问题