我想问一个关于regex的问题。
我有一列伊万。
eg ["DE46700202700663820656", "DE07860700240455474700"]
我想在每4个字符之间添加空格。
eg "DE46 7002 0270 0663 8206 56"
目前我使用这个正则表达式。
String(this.props.invoiceData.iban).replace(/(.{4})/g, '$1 ').split(',')
它可以添加空白,但是regex不会重新启动第二个IBAN,而第二个IBAN被销毁。
eg ["DE46 7002 0270 0663 8206 56", "D E078 6070 0240 4554 7470 0"]
我应该怎么做才能向两个具有适当空格的IBAN展示如下所示?
eg ["DE46 7002 0270 0663 8206 56", "DE07 8607 0024 0455 4747 00"]
发布于 2017-12-29 10:16:07
它可以添加空白,但是regex不会重新启动第二个IBAN,而第二个IBAN被销毁。
那是因为大王保持状态。以下任一项:
lastIndex设置为0这里是#1:
var ibans = ["DE46700202700663820656", "DE07860700240455474700"];
ibans = ibans.map(function(iban) {
return iban.replace(/(.{4})/g, '$1 ');
});
console.log(ibans);
除非您使用的是古老的 JavaScript引擎,每次都有不重新创建文字正则表达式的问题(我们说的是Firefox3.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+箭头函数,这两种功能都可以缩短.
发布于 2017-12-29 10:14:54
您可以使用.map()尝试这样的方法
var a = ["DE46700202700663820656", "DE07860700240455474700"];
var b = a.map(i => i.replace(/(.{4})/g, '$1 '));
console.log(b)
https://stackoverflow.com/questions/48020882
复制相似问题