2010-01-08 67 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");