使用包含Regex的变量

Use Variable that contains Regex

本文关键字:变量 Regex 包含      更新时间:2023-09-26

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

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

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

只需将正则表达式分配给一个变量:

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

RegExp是JavaScript中的原生类型,并且您已经使用的形式--/'B(?=('d{3})+(?!'d))/g-是其文本形式。因此,您可以像任何文本形式一样将该值分配给变量:

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

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

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

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