jquery replace / g global

时间:2015-04-10 12:26:52

标签: javascript jquery

我正在尝试将字符串中对关键字或数字的所有引用替换为其他内容,我可以使用以下内容执行此操作,但需要/ g以确保它更改所有引用。但是我想让它变得动态,将第一个数字改为变量,然后将该变量放在正斜杠之间,但它不会起作用。

作品

var res = str.replace(/5026555042451/g, "34234324");

不起作用

var customstring = "5026555042451";
var res = str.replace(/+customstring+/g, "34234324");

2 个答案:

答案 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;)