我正在尝试将字符串中对关键字或数字的所有引用替换为其他内容,我可以使用以下内容执行此操作,但需要/ g以确保它更改所有引用。但是我想让它变得动态,将第一个数字改为变量,然后将该变量放在正斜杠之间,但它不会起作用。
作品
var res = str.replace(/5026555042451/g, "34234324");
不起作用
var customstring = "5026555042451";
var res = str.replace(/+customstring+/g, "34234324");
答案 0 :(得分:5)
您应该创建一个新的RegExp object
基本上,它是一个带有2个参数的对象:规则和标志。
最后看起来像这样:
var customstring = "5026555042451";
var res = str.replace(new RegExp(customstring, 'g'), "34234324");
这也是在正则表达式中连接字符串的方式。有关详细信息,请参阅How can I concatenate regex literals in JavaScript?
答案 1 :(得分:2)
var res = str.replace(/+customstring+/g, "34234324");
然后把那个变量放在正斜杠之间,但它不会起作用。
这是因为/whatever/
不是字符串而是正则表达式文字,并且其中有否斜杠。斜杠只是分隔符(如字符串中的撇号和引号:var s = 'whatever'
但正则表达式本身就是里面这些。这就是为什么你不能向斜杠添加任何东西:它们只是'你只需在正则表达式中添加加号,它具有自己的含义(你可以使用加号来捕捉出现一次或多次的字符或组,例如/ {+ 1 /匹配aa
poaalpopop
)。
PS。 @ Karl-AndréGagnon你的答案中有一个错字:新的RegExp,而不是新的RegExp;)