我想问一个关于正则表达式的问题。
我有一组IBAN。
例如["DE46700202700663820656", "DE07860700240455474700"]
我想在每个4个字符之间添加空格。
例如"DE46 7002 0270 0663 8206 56"
目前,我使用此正则表达式。String(this.props.invoiceData.iban).replace(/(.{4})/g, '$1 ').split(',')
它可以添加空格,但是对于第二个IBAN,正则表达式不会重新启动,并且第二个IBAN被销毁。
例如["DE46 7002 0270 0663 8206 56", "D E078 6070 0240 4554 7470 0"]
如何显示两个具有适当空格的IBAN,如下所示?
例如["DE46 7002 0270 0663 8206 56", "DE07 8607 0024 0455 4747 00"]
最佳答案
它可以添加空格,但是对于第二个IBAN,正则表达式不会重新启动,并且第二个IBAN被销毁。
这是因为正则表达式保持状态。要么:
每次创建它,或者
在使用lastIndex
之前将其设置为0
这是#1:
var ibans = ["DE46700202700663820656", "DE07860700240455474700"];
ibans = ibans.map(function(iban) {
return iban.replace(/(.{4})/g, '$1 ');
});
console.log(ibans);
除非您使用的是古老的JavaScript引擎,而这个引擎的问题是每次都不重新创建文字正则表达式(我们说的是Firefox 3.0x或更高版本),否则应该没问题。
这里是#2:
var rex = /(.{4})/g;
var ibans = ["DE46700202700663820656", "DE07860700240455474700"];
ibans = ibans.map(function(iban) {
rex.lastIndex = 0;
return iban.replace(rex, '$1 ');
});
console.log(ibans);
显然,如果可以使用ES2015 +箭头功能,则两者都可以缩短。
关于javascript - 如何正确为IBAN数组添加空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48020882/