我希望将regex存储在一个要多次使用的变量中。例如,我有一些正则表达式用逗号https://jsfiddle.net/Le7wayee/分隔数字:
var numAcquired = 1400000
numAcquired = numAcquired.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
这个输出当然是字符串1,400,000
,但是我对包含不同数字/长度的多个变量使用了很多次,为了简单起见,我更喜欢这样做。为了清楚,将它存储在一个变量中,而不是每次都明确地写它。这是可能的吗?
答案 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, ',');
如果你想要一个可运行的例子,请看我同事的答案。