为什么 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})$/);
但那是 returning ["1234*321*123", "1234", "321", "123"]
,而我期待 ["1234", "321", "123"]
。
为什么,如果只有数字组包含在捕获组中,match
return 整个字符串是否作为数组的第一个元素?
当您使用()
进行匹配时,它会同时给出特定的组件和完整的字符串。对于您想要的结果,请使用:
'1234*321*123'.match(/\d+/g);
第零个元素总是完全匹配。第一个元素是第一个捕获,第二个元素是第二个捕获,等等。如果你只想要所有捕获而不是完全匹配,你可以使用 result.slice(1)
.
如果你问的是"Why is the first element the full match?":
- 这就是
match
的工作方式。
- 它类似于
[=12=]
与 </code>、<code>
... 在旧语言中。
假设我有这个字符串:
'1234*321*123'
我想将每组数字作为数组中的一个元素。
所以我用了这个:
'1234*321*123'.match(/^(\d{4})\*(\d{3})\*(\d{3})$/);
但那是 returning ["1234*321*123", "1234", "321", "123"]
,而我期待 ["1234", "321", "123"]
。
为什么,如果只有数字组包含在捕获组中,match
return 整个字符串是否作为数组的第一个元素?
当您使用()
进行匹配时,它会同时给出特定的组件和完整的字符串。对于您想要的结果,请使用:
'1234*321*123'.match(/\d+/g);
第零个元素总是完全匹配。第一个元素是第一个捕获,第二个元素是第二个捕获,等等。如果你只想要所有捕获而不是完全匹配,你可以使用 result.slice(1)
.
如果你问的是"Why is the first element the full match?":
- 这就是
match
的工作方式。 - 它类似于
[=12=]
与</code>、<code>
... 在旧语言中。