我确信这很简单,但我无法在网上找到它。
此代码:
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
答案 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