Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 查找正则表达式搜索/匹配的结束索引_Javascript_Regex - Fatal编程技术网

Javascript 查找正则表达式搜索/匹配的结束索引

Javascript 查找正则表达式搜索/匹配的结束索引,javascript,regex,Javascript,Regex,如果我对正则表达式使用string.match(),我将返回匹配的字符串,但不会将索引返回到匹配发生的原始字符串中。如果我执行string.search(),我会得到索引,但我不一定知道字符串的匹配部分有多长。是否有一种方法可以同时执行这两种操作,以便我可以在原始字符串中获取匹配的结尾的索引 我想我可以一个接一个地做(如下),假设它们返回相同的结果,但方式不同,但这看起来很难看,效率低下,我怀疑还有更好的方法 var str = "Fear leads to anger. Anger leads

如果我对正则表达式使用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));
  }
或者:

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…,这样会有多个匹配项,而只有一个索引是没有意义的)。如果所有合理的浏览器都支持这一点(…?),那就太完美了。