JS正则:'abc01'.match(^(abc[d]+))为什么返回两个值?

JavaScript029

JS正则:'abc01'.match(^(abc[d]+))为什么返回两个值?,第1张

因为你这是非全局匹配(第二个/后面没有g),所以返回的数组的组成是这样的:

整个正则表达式匹配到的字符串、各个分组匹配到的子串、匹配到的字符串在原串中的开始索引、原字符串、命名分组匹配到的groups。

因为你这里有一个分组(小括号括着的),所以1是分组匹配到的子串,又因为你这里没有命名分组,所以groups是undefined。

下面这个例子你可以试试:

'abc01'.match(/^(abc\d+)/g)

'abc01'.match(/^(?<字母>abc)(?<数字>\d+)/)

另外\d不需要放在[]中。

可以直接返回一个数组或是一个对象。

下面是个小例子,仅供参考:

function tab(){

    return {a:'a',b:'b'}

}

tab()

这样就可以实现return多个返回值了。