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

snz8szmq  于 2023-02-15  发布在  Java
关注(0)|答案(3)|浏览(196)

我相信这是一个简单的问题,但我在网上找不到。
此代码:

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)。我是否可以做一些事情来使(非常方便的)"new Regexp"语法工作,或者我必须找到其他方法?这个例子很简单,但在真正的应用程序中,它将执行全局搜索和替换,所以我需要regex和"g"。或者我需要吗?
短暂性脑缺血发作

i34xakig

i34xakig1#

用双反斜杠\转义括号。试试这个。

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);
    • 一个
yzuktlbb

yzuktlbb2#

RegEx定义字符串应为:

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

使用RegEx时需要对特殊字符进行转义,并且由于您是在字符串中构建RegEx,因此需要对转义字符P进行转义
http://www.regular-expressions.info/characters.html

svdrlsy4

svdrlsy43#

您需要转义字符串中包含的特殊字符,您将从该字符串创建Regex。例如,定义以下函数:

function escapeRegex(string) {
  return string.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&');
}

并使用它将结果赋给bad_string变量:

let bad_string = "bar(arg)"
bad_string = escapeRegex(bad_string)

// You can now use the string to create the Regex :v:

相关问题