鉴于var expression = /(a.)|(b.)|(c.)/;
,为了匹配var value = "axx"
,我希望能够获得与expression
匹配的value
部分,在这种情况下, (a.)
(这是一个现已删除的帖子的转发,这是错误的,但可以理解为标记为重复。我想要获得的是正则表达式的一部分,而不是匹配字符串的部分)。
答案 0 :(得分:1)
function getFirstMatchedGroupIndex(regex, test_str) {
var result = test_str.match(regex);
if (result) {
return result.splice(1).findIndex(x => x);
}
}
var reg = /(a.)|(b.)|(c.)/;
getFirstMatchedGroupIndex(reg, "axx"); // 0
getFirstMatchedGroupIndex(reg, "bxx"); // 1
getFirstMatchedGroupIndex(reg, "cxx"); // 2
getFirstMatchedGroupIndex(reg, "xxx"); // undefined
此函数利用了以下事实:在匹配的情况下,字符串方法match
返回包含以下条目的数组: