使用包含正则表达式的变量

时间:2015-06-26 22:41:49

标签: javascript regex

我希望将regex存储在一个要多次使用的变量中。例如,我有一些正则表达式用逗号https://jsfiddle.net/Le7wayee/分隔数字:

var numAcquired = 1400000    
numAcquired = numAcquired.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

这个输出当然是字符串1,400,000,但是我对包含不同数字/长度的多个变量使用了很多次,为了简单起见,我更喜欢这样做。为了清楚,将它存储在一个变量中,而不是每次都明确地写它。这是可能的吗?

2 个答案:

答案 0 :(得分:3)

只需将正则表达式赋值给变量:

var numberCommasRegexp = /\B(?=(\d{3})+(?!\d))/g;

var numAcquired = 1400000;
numAcquired = numAcquired.toString().replace(numberCommasRegexp, ',');

alert(numAcquired);

但是不是一直编写replace()表达式,而是可以定义一个函数来执行此操作。

function addCommas(number) {
  return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
var numAcquired = 14000000;
numAcquired = addCommas(numAcquired);
alert(numAcquired);

答案 1 :(得分:0)

RegExp is a native type in JavaScript,以及您已经使用的表单 - /\B(?=(\d{3})+(?!\d))/g - 是 literal 表单。因此,您可以将该值分配给变量,就像任何文字形式一样:

var pattern = /\B(?=(\d{3})+(?!\d))/g

然后在接受模式的String的任何方法中重用该值:

numAcquired.toString().replace(pattern, ',');

如果你想要一个可运行的例子,请看我同事的答案。