如何正确地为 IBAN 数组添加空格
How to add whitespace for array of IBAN properly
我想问一个关于正则表达式的问题。
我有一组 IBAN。
例如["DE46700202700663820656", "DE07860700240455474700"]
我想在每 4 个字符之间添加空格。
例如"DE46 7002 0270 0663 8206 56"
目前我使用这个正则表达式。
String(this.props.invoiceData.iban).replace(/(.{4})/g, ' ').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"]
你可以这样尝试 .map()
:
var a = ["DE46700202700663820656", "DE07860700240455474700"];
var b = a.map(i => i.replace(/(.{4})/g, ' '));
console.log(b)
It could add whitespace but regex does not restart for a second IBAN and second IBAN is destroyed.
那是因为正则表达式保持状态。或者:
每次都创建,或者
使用前将lastIndex
设为0
这是#1:
var ibans = ["DE46700202700663820656", "DE07860700240455474700"];
ibans = ibans.map(function(iban) {
return iban.replace(/(.{4})/g, ' ');
});
console.log(ibans);
除非您使用的是 ancient 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, ' ');
});
console.log(ibans);
显然,如果可以使用 ES2015+ 箭头函数等,两者都可以缩短...
我想问一个关于正则表达式的问题。
我有一组 IBAN。
例如["DE46700202700663820656", "DE07860700240455474700"]
我想在每 4 个字符之间添加空格。
例如"DE46 7002 0270 0663 8206 56"
目前我使用这个正则表达式。
String(this.props.invoiceData.iban).replace(/(.{4})/g, ' ').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"]
你可以这样尝试 .map()
:
var a = ["DE46700202700663820656", "DE07860700240455474700"];
var b = a.map(i => i.replace(/(.{4})/g, ' '));
console.log(b)
It could add whitespace but regex does not restart for a second IBAN and second IBAN is destroyed.
那是因为正则表达式保持状态。或者:
每次都创建,或者
使用前将
lastIndex
设为0
这是#1:
var ibans = ["DE46700202700663820656", "DE07860700240455474700"];
ibans = ibans.map(function(iban) {
return iban.replace(/(.{4})/g, ' ');
});
console.log(ibans);
除非您使用的是 ancient 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, ' ');
});
console.log(ibans);
显然,如果可以使用 ES2015+ 箭头函数等,两者都可以缩短...