带有正则表达式的Javascript字符串变量

带有正则表达式的Javascript字符串变量,javascript,regex,Javascript,Regex,我不明白为什么不能对正则表达式字符串使用变量。见链接: 它在没有变量的情况下工作,但在正则表达式中使用变量时不工作。我也躲过了我的回击。输出应为“1234567890” var regex = "/\\d(?=(?:\\d{3})+(?!\\d))/g, '$&,'"; 那是一根绳子。它不是regexp对象和替换字符串。当它被传递到replace时,它是一个参数,而不是两个。您需要分别传递这两个参数: var regex = /\d(?=(?:\d{3})+(?!\d))/g; var

我不明白为什么不能对正则表达式字符串使用变量。见链接:

它在没有变量的情况下工作,但在正则表达式中使用变量时不工作。我也躲过了我的回击。输出应为“1234567890”

var regex = "/\\d(?=(?:\\d{3})+(?!\\d))/g, '$&,'";
那是一根绳子。它不是regexp对象和替换字符串。当它被传递到
replace
时,它是一个参数,而不是两个。您需要分别传递这两个参数:

var regex = /\d(?=(?:\d{3})+(?!\d))/g;
var replace = '$&,';
var num = 1234567890;

alert(String(num).replace(/\d(?=(?:\d{3})+(?!\d))/g, '$&,'));
alert(String(num).replace(regex, replace));
alert(regex);


请注意,如果确实需要,可以使用数组和
apply
,在一次调用中定义它们:

var regex = [/\d(?=(?:\d{3})+(?!\d))/g, '$&,'];
alert(String.prototype.replace.apply(num, regex));

然而,这并不是一个好主意——它更难阅读,更不直观

那是一根绳子。它不是regexp对象和替换字符串。当它被传递到
replace
时,它是一个参数,而不是两个。您需要分别传递这两个参数:

var regex = /\d(?=(?:\d{3})+(?!\d))/g;
var replace = '$&,';
var num = 1234567890;

alert(String(num).replace(/\d(?=(?:\d{3})+(?!\d))/g, '$&,'));
alert(String(num).replace(regex, replace));
alert(regex);


请注意,如果确实需要,可以使用数组和
apply
,在一次调用中定义它们:

var regex = [/\d(?=(?:\d{3})+(?!\d))/g, '$&,'];
alert(String.prototype.replace.apply(num, regex));


然而,这并不是一个好主意——阅读起来要困难得多,直观得多。

听起来好像有人需要花2分钟阅读文档。正确的演示:听起来有人需要花2分钟阅读文档。正确的演示:哦,天哪……我甚至没有看到那个错误。就我而言,是脑残。谢谢。哦,天哪……我甚至没看到那个错误。就我而言,是脑残。谢谢