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

标签 javascript regex

我不明白为什么我不能对正则表达式字符串使用变量。参见链接:http://jsfiddle.net/nmWuw/1/

它可以在没有变量的情况下工作,但当变量用于正则表达式时则不起作用。我也逃脱了反斜杠。输出应为“1,234,567,890”。

最佳答案

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

这是一个字符串。它不是正则表达式对象和替换字符串。当它传递给 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);

http://jsfiddle.net/nmWuw/3/

<小时/>

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

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

http://jsfiddle.net/nmWuw/6/

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

关于带有正则表达式的 JavaScript 字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627968/

相关文章:

Java-正则表达式来分割

regex - 拆分正则表达式,只返回字符、数字和下划线。 Perl

javascript - 并行读取多个文件并相应地将数据写入新文件中node.js

javascript - 无法渲染简单的 react 示例

javascript - 清除输入文本AngularJS

javascript - 按钮ng-click中的功能参数相同

java - 使用 split 提取重叠匹配

javascript - Webpack,提取加载程序不会加载后台网址

java - 为数字和单词设置unicode的正则表达式

javascript - 通过 javascript 正则表达式验证 SoundCloud URL