![](/img/trans.png)
[英]Why using .filter() together with .match() is only returning the first element matching the condition?
[英]Why is match returning the whole string as the first element in the array?
假設我有以下字符串:
'1234*321*123'
我想將每一組數字作為數組中的一個元素。
所以我用了這個:
'1234*321*123'.match(/^(\d{4})\*(\d{3})\*(\d{3})$/);
但是,當我期待的是["1234", "321", "123"]
時,返回的是["1234*321*123", "1234", "321", "123"]
["1234", "321", "123"]
。
為什么如果僅將數字組括在捕獲組中,則match
將整個字符串作為數組的第一個元素返回?
零元素始終是完整匹配。 第一個元素是第一個捕獲,第二個元素是第二個捕獲, result.slice(1)
。如果只希望沒有完全匹配的所有捕獲,則可以使用result.slice(1)
。
如果您問“為什么第一個元素完全匹配?” :
match
的方式。 $0
相對於$1
, $2
...相對應。 當您使用()
進行匹配時,它會同時提供特定的組件和完整的字符串。 為了獲得想要的結果,請使用以下命令:
'1234*321*123'.match(/\d+/g);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.