如何在字符串包含括号时配置RegExp

时间:2012-02-04 20:51:41

标签: javascript regex replace parentheses

我确信这很简单,但我无法在网上找到它。

此代码:

    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)。我能做些什么来使(非常方便)“新的Regexp”语法工作,还是我必须找到另一种方法?这个例子很简单,但在真正的应用程序中它将进行全局搜索和替换,所以我需要正则表达式和“g”。或者我呢?

TIA

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您的RegEx定义字符串应为:

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

使用RegEx时需要转义特殊字符,并且因为要在字符串中构建RegEx,所以需要转义转义字符:P

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