Javascript 使用RegExp获取字符串的最后一个匹配项

Javascript 使用RegExp获取字符串的最后一个匹配项,javascript,regex,Javascript,Regex,假设我的文本如下: 购买这款手机的一个令人信服的原因可能是它的显示屏。当然,我们会喜欢全高清的,但是我们还是因为价格太高而闭嘴了。屏幕响应性也很好 我只想获取文本中最后出现的“the”字符串的索引。(使用RegExp) 仅给出字符串第一次出现的位置。 有什么建议吗 为什么需要正则表达式来查找最后出现的子字符串。您可以使用本机.lastIndexOf()方法: re.lastIndexOf("the"); 为什么需要正则表达式来查找最后出现的子字符串。您可以使用本机.lastIndexOf()方

假设我的文本如下:

购买这款手机的一个令人信服的原因可能是它的显示屏。当然,我们会喜欢全高清的,但是我们还是因为价格太高而闭嘴了。屏幕响应性也很好

我只想获取文本中最后出现的“the”字符串的索引。(使用RegExp)

仅给出字符串
第一次出现的位置。

有什么建议吗

为什么需要正则表达式来查找最后出现的子字符串。您可以使用本机
.lastIndexOf()
方法:

re.lastIndexOf("the");

为什么需要正则表达式来查找最后出现的子字符串。您可以使用本机
.lastIndexOf()
方法:

re.lastIndexOf("the");
单向

var pos = -1;
while ((match = re.exec(str)) != null)
    pos = match.index;

alert("last match found at " + pos);
单向

var pos = -1;
while ((match = re.exec(str)) != null)
    pos = match.index;

alert("last match found at " + pos);

正则表达式是
/\b(?(.|\n)*\b)/
(无全局标志!)…表示“The”一词,后面不跟“The”一词

要测试:

var re = new RegExp('\\b' + input + '\\b(?!(.|\\n)*\\b' + input + '\\b)');
var pos = re.test(str) ? re.exec(str).index : -1;

正则表达式是
/\b(?(.|\n)*\b)/
(无全局标志!)…表示“The”一词,后面不跟“The”一词

要测试:

var re = new RegExp('\\b' + input + '\\b(?!(.|\\n)*\\b' + input + '\\b)');
var pos = re.test(str) ? re.exec(str).index : -1;

为什么用正则表达式过度使用它?仅供参考,这与普通JavaScript jQuery无关。你知道如何使用regex实现这一点吗?我想你可能误解了
lastIndex
在你的问题中的含义<当使用
test()
exec()
时,code>lastIndex
用于设置查找下一个匹配项的开始位置。为什么要用regex过度杀死它?仅供参考,这与普通JavaScript jQuery无关。你知道如何使用regex实现这一点吗?我想你可能误解了
lastIndex
在你的问题中的含义<当使用
test()
exec()
时,code>lastIndex用于设置查找下一个匹配项的开始位置。知道如何使用regex实现这一点吗?@SashiKant:为什么要使它复杂化?让它复杂化吧。。因为你是用regex做的任何想法如何用regex做这件事…@SashiKant:你为什么把它复杂化了?让它复杂化吧。。因为您需要使用regexA正则表达式来完成这项工作,但并未真正提交。:-)涉及正则表达式,但未真正提交。:-)