2016-12-01 51 views
0

我想使用正则表达式找到最后一个匹配的单词。我搜索了这个功能,并发现负面的前瞻。Negative Lookahead在句子中找到经纬度匹配的词

例如:要找到“富”,在“此foo是不一样的富”

在这里,我需要找到最后匹配的“富”的指标。对于这个我正在使用JavaScript搜索功能与搜索(正则表达式)其中正则表达式是foo(?!。* foo)

问题是,搜索没有返回正确的索引(它可能是正则表达式问题)。此功能与Chrome的查找功能向上箭头找到以前的匹配。所以我想知道如果我需要更改我的正则表达式?

谢谢

+2

请添加你的代码。看[这里](https://jsfiddle.net/272j97cd/),'28'看起来对我来说是正确的。 –

+0

再次感谢Wiktor :)我正在使用子字符串错误的方式(子字符串放弃最后一个匹配的字) – Bhuwan

+0

@WiktorStribiżew因为这个原因,我只是建议使用'String.prototype.lastIndexOf()' –

回答

1

找到最后匹配的“foo”的索引。您可以使用String.prototype.lastIndexOf()

var lastIndex = 'This foo is not same as the foo'.lastIndexOf('foo'); 
 

 
console.log(lastIndex);

+0

如果OP需要找到一个只有整个单词的“foo”,该怎么办? –

+1

http://regexr.com/3eplj它工作正常。他们使用match()javascript函数,但我需要使用搜索功能的匹配词的索引 – Bhuwan

+0

如果'foo'是唯一的整词,返回的最后一个索引将是'0'而不是'-1',如果没有找到则返回。 –