为什么匹配返回整个字符串作为数组中的第一个元素?

时间:2015-05-22 01:09:11

标签: javascript regex match

我们说我有这个字符串:

'1234*321*123'

我希望将每组数字作为数组中的元素。

所以我用过这个:

'1234*321*123'.match(/^(\d{4})\*(\d{3})\*(\d{3})$/);

但是当我期待["1234*321*123", "1234", "321", "123"]时,那就回归["1234", "321", "123"]

为什么,如果只有数字组被包含在捕获组中,为什么match会将整个字符串作为数组的第一个元素返回?

2 个答案:

答案 0 :(得分:3)

Zeroth元素始终是完全匹配。第一个元素是第一个捕获,第二个元素是第二个捕获,等等。如果您只想要所有捕获而没有完全匹配,则可以使用result.slice(1)

如果你问“为什么第一个元素完全匹配?”

  • 这就是match的工作方式。
  • 它与旧版语言中的$0$1$2 ...平行。

答案 1 :(得分:0)

当您使用()进行匹配时,它会同时提供特定组件和完整字符串。要获得所需结果,请使用:

'1234*321*123'.match(/\d+/g);