RegEx在生产中不匹配字符串,但适用于测试人员

时间:2014-11-02 19:45:26

标签: javascript regex

我有以下字符串:/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528。我试图获取第三个URL字符串,因此编写了以下RegEx:/([^/]*)\w+/g。根据Regexr的说法,这应该是match all parts of the URL

然后,使用Javascript我试图访问第三个数组元素:

var key = /([^/]*)\w+/g.exec('/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528')[2];

然而,这是未定义的。如果您打印它的结果(作为JSON),则得到["v0","v"]

任何想法有什么不对?

1 个答案:

答案 0 :(得分:3)

首先出错的是使用错误的工具。

只需在/上拆分,就不需要正则表达式。

'/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528'.split('/')[3]; //0626df905120f6d6

现在,如果您确实想使用正则表达式,请改用match

'/v0/lifts/0626df905120f6d6/refs/8f23576e6838b528'.match(/([^/]*)\w+/g) //["v0", "lifts", "0626df905120f6d6", "refs", "8f23576e6838b528"]

exec仅在每次匹配时有多个捕获组时才有用。