簡體   English   中英

為什么match將整個字符串作為數組的第一個元素返回?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM