我们说我有这个字符串:
'1234*321*123'
我希望将每组数字作为数组中的元素。
所以我用过这个:
'1234*321*123'.match(/^(\d{4})\*(\d{3})\*(\d{3})$/);
但是当我期待["1234*321*123", "1234", "321", "123"]
时,那就回归["1234", "321", "123"]
。
为什么,如果只有数字组被包含在捕获组中,为什么match
会将整个字符串作为数组的第一个元素返回?
答案 0 :(得分:3)
Zeroth元素始终是完全匹配。第一个元素是第一个捕获,第二个元素是第二个捕获,等等。如果您只想要所有捕获而没有完全匹配,则可以使用result.slice(1)
。
如果你问“为什么第一个元素完全匹配?”:
match
的工作方式。$0
与$1
,$2
...平行。答案 1 :(得分:0)
当您使用()
进行匹配时,它会同时提供特定组件和完整字符串。要获得所需结果,请使用:
'1234*321*123'.match(/\d+/g);