2012-02-04 142 views
1

我敢肯定這是一個容易的,但我無法在網上找到它。如何配置RegExp時,字符串包含括號

此代碼:

var new_html = "foo and bar(arg)"; 
    var bad_string = "bar(arg)"; 
    var regex = new RegExp(bad_string, "igm"); 
    var bad_start = new_html.search(regex); 

套bad_start爲-1(未找到)。如果我刪除(arg),它按預期運行(bad_start == 8)。有什麼我可以做的,使(非常方便)「新的正則表達式」的語法工作,還是我必須找到另一種方式?這個例子是微不足道的,但在真正的應用程序中,它將進行全局搜索和替換,所以我需要正則表達式和「g」。或者我?

TIA

回答

2

用雙反斜槓\\將括號轉義出來。嘗試這個。

var new_html = "foo and bar(arg)"; 
    var bad_string = "bar\\(arg\\)"; 
    var regex = new RegExp(bad_string, "igm"); 
    var bad_start = new_html.search(regex); 

Demo

0

您正則表達式定義字符串應該是:

var bad_string = "bar\\(arg\\)"; 

特殊字符需要進行轉義使用正則表達式的時候,因爲你是在一個字符串建設正則表達式,你需要以逃避您的轉義字符:P

http://www.regular-expressions.info/characters.html

相關問題