如何在正则表达式中使用变量?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (931)

我想用JavaScript创建一个String.replaceAll()方法,我认为使用RegEx是最简单的方法,但是我不知道如何将一个变量传递给RegEx,我已经可以这样做了,它将把“B”的所有实例替换为“A”。

"ABABAB".replace(/B/g, "A");

但我想做这样的事:

String.prototype.replaceAll = function(replaceThis, withThis) {
    this.replace(/replaceThis/g, withThis);
};

但显然这只会替换文本“replaceThis”...所以如何将此变量传递给我的RegEx字符串?

提问于
用户回答回答于

不是使用/regex/g语法,你可以构造一个新的RegExp对象:

var replace = "regex";
var re = new RegExp(replace,"g");

可以通过这种方式动态创建正则表达式对象:

"mystring".replace(re, "newstring");
用户回答回答于

"ABABAB".replace(/B/g, "A");

和往常一样:除非必须使用regex,否则不要使用regex。对于一个简单的字符串替换:

'ABABAB'.split('B').join('A')

扫码关注云+社区

领取腾讯云代金券