一尘不染

使用字符串变量即时创建RegExps

javascript

假设我想使以下内容可重复使用:

function replace_foo(target, replacement) {
   return target.replace("string_to_replace",replacement);
}

我可能会做这样的事情:

function replace_foo(target, string_to_replace, replacement) {
   return target.replace(string_to_replace,replacement);
}

使用字符串文字,这很容易。但是,如果我想对正则表达式更加棘手,该怎么办?例如,说我要替换, 而是
string_to_replace。本能地,我会尝试通过以下方式扩展上述内容:

function replace_foo(target, string_to_replace, replacement) {
   return target.replace(/^string_to_replace/,replacement);
}

这似乎不起作用。我的猜测是它认为string_to_replace是字符串文字,而不是代表字符串的变量。是否可以使用字符串变量即时创建JavaScript正则表达式?如果可能的话,这样的事情会很棒:

function replace_foo(target, string_to_replace, replacement) {
   var regex = "/^" + string_to_replace + "/";
   return target.replace(regex,replacement);
}

阅读 244

收藏
2020-05-01

共1个答案

一尘不染

还有new RegExp(string, flags)哪里flagsgi。所以

'GODzilla'.replace( new RegExp('god', 'i'), '' )

评估为

zilla
2020-05-01