簡體   English   中英

使用 RegExp 獲取最后一次出現的字符串

[英]Get the last occurrence of a string using RegExp

假設我的文字如下:

購買這款手機的一個令人信服的原因可能是它的顯示屏。 當然,我們會喜歡全高清,但由於價格過高,我們又一次閉嘴了。 屏幕響應能力也不錯。

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

var re = new RegExp("\\b"+"the"+"\\b",'g');
var pos = re.lastIndex;

僅給出字符串 .. the一次出現的 position
有什么建議么?

為什么需要正則表達式來查找substring的最后一次出現。 您可以使用本機.lastIndexOf()方法:

re.lastIndexOf("the");

單程;

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

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

正則表達式為/ /\\bthe\\b(?!(.|\\n)*\\bthe\\b)/ (?!(。| /\\bthe\\b(?!(.|\\n)*\\bthe\\b)/ (無全局標志!)...表示單詞“ the”,后面沒有單詞“ the” 。

去測試:

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

這是一個有效的解決方案,即使使用非全局正則表達式也是如此:

    function regexLastIndexOf(str, regex) {
        regex = regex.global
            ? regex
            : new RegExp(regex.source, 'g' + (regex.ignoreCase ? 'i' : '') + (regex.multiLine ? 'm' : ''));
        var lastIndexOf = -1;   
        var nextStop = 0;
        var result;
        while ((result = regex.exec(str)) != null) {
            lastIndexOf = result.index;
            regex.lastIndex = ++nextStop;
        }
        return lastIndexOf;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM