Javascript和RegEx:match函数返回一个数组

Javascript and RegEx: match function returns an array

本文关键字:一个 数组 返回 RegEx match 函数 Javascript      更新时间:2023-11-03

我有一个字符串:

var doi_id= "10.3390/metabo1010001"

我只想匹配从末尾开始的第一个数字序列。

为此,我使用这个regEx:

var doinumericpart = doi_id.match(/('d*)$/);

"问题"(或否)是doinnumericpart返回

1010001,1010001

而不是1010001,我不知道为什么。

当我在此处尝试此regex时:http://regexr.com?31htm一切似乎都很顺利。

非常感谢你的帮助。

match()返回一个数组。第一个元素是与模式匹配的整个子字符串,然后第一个元素包含子模式。

在您的情况下,只需去掉()——您不需要它们,因为它们包含了整个模式。

var doinumericpart = doi_id.match(/'d*$/)[0];

[0]取消引用数组,从而为您提供所需的确切元素。

match返回null或一个匹配数组。匹配的数量取决于正则表达式中有多少个捕获组。[1]中的项目将与您匹配,因此您可以执行以下操作:

var doinumericpart = doi_id.match(/('d*)$/)[1]; //Access second item in the matches array

match返回完全匹配和每个捕获组,如果没有匹配,则返回null

如果你想提供一些上下文,这很有用:

"10.3390/metabo1010001".match(/metabo('d*)/)
// => ["metabo1010001", "1010001"]
  • metabo1010001完全匹配
  • 1010001是第一个捕获组