2012-02-04 117 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

相关问题