2016-12-01 27 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',如果沒有找到則返回。 –