如果我将string.match()与正则表达式一起使用,我将返回匹配的字符串,但不会返回匹配发生的原始字符串的索引.如果我做string.search(),我得到索引,但我不一定知道字符串的匹配部分有多长.有两种方法可以做到,所以我可以在原始字符串中获得匹配结束的索引吗?
我想我可以一个接一个地做(下面),假设他们以不同的方式返回相同的结果,但这看起来很丑陋和低效,我怀疑有更好的方法.
var str = "Fear leads to anger. Anger leads to hate. Hate leads to suffering";
var rgx = /l[aeiou]+d/i;
var match = str.match(rgx);
if (match && match[0]) {
var i = str.search(rgx);
console.log ("end of match is at index " + (i+match[0].length));
}
Run Code Online (Sandbox Code Playgroud)
HBP*_*HBP 10
.match 返回具有以下属性的新数组:
index属性设置为完整字符串S中匹配的子字符串的位置.
input属性设置为S.
length属性设置为n + 1.
0属性设置为匹配的子字符串(即,在offset i包含和offset e exclusive之间的S部分).
对于每个整数i,使得i> 0且i <= n,将名为ToString(i)的属性设置为r的captures数组的第i个元素.
来自http://bclary.com/2004/11/07/#a-15.10.6.2
match.index 将提供您所需要的.