[英]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, '$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 +箭頭功能,則兩者都可以縮短。
您可以使用.map()
這樣嘗試:
var a = ["DE46700202700663820656", "DE07860700240455474700"]; var b = a.map(i => i.replace(/(.{4})/g, '$1 ')); console.log(b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.