Javascript 查找正则表达式搜索/匹配的结束索引
如果我对正则表达式使用string.match(),我将返回匹配的字符串,但不会将索引返回到匹配发生的原始字符串中。如果我执行string.search(),我会得到索引,但我不一定知道字符串的匹配部分有多长。是否有一种方法可以同时执行这两种操作,以便我可以在原始字符串中获取匹配的结尾的索引 我想我可以一个接一个地做(如下),假设它们返回相同的结果,但方式不同,但这看起来很难看,效率低下,我怀疑还有更好的方法Javascript 查找正则表达式搜索/匹配的结束索引,javascript,regex,Javascript,Regex,如果我对正则表达式使用string.match(),我将返回匹配的字符串,但不会将索引返回到匹配发生的原始字符串中。如果我执行string.search(),我会得到索引,但我不一定知道字符串的匹配部分有多长。是否有一种方法可以同时执行这两种操作,以便我可以在原始字符串中获取匹配的结尾的索引 我想我可以一个接一个地做(如下),假设它们返回相同的结果,但方式不同,但这看起来很难看,效率低下,我怀疑还有更好的方法 var str = "Fear leads to anger. Anger leads
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));
}
或者:
if (match && match[0]) {
console.log ("end of match is at index " + (str.indexOf(match[0]) + match[0].length));
}
.match
返回具有以下属性的新数组:
index属性设置为
匹配子串的位置
在完整字符串S中
输入属性设置为S
长度属性设置为n+1
0属性被设置为匹配的
子字符串(即S的部分)
在偏移量i(含)和偏移量之间
e独家)
对于每个整数i,i>0,我想你是对的,如果你在匹配[0]上做一个indexOf,它总是第一次出现。除非有一个奇怪的正则表达式,比如说,给你一个字符串的第二次出现…?有趣的是…我注意到Chrome把索引放在数组中(假设你没有a/g…,这样会有多个匹配项,而只有一个索引是没有意义的)。如果所有合理的浏览器都支持这一点(…?),那就太完美了。