我试图匹配JavaScript中最后一次出现的字符串之后的所有内容(但不包括!)。
例如,搜索是:
[quote="user1"]this is the first quote[/quote]\n[quote="user2"]this is the 2nd quote and some url https://www.google.com/[/quote]\nThis is all the text I\'m wirting about myself.\n\nLook at me ma. Javascript.
编辑:我希望在最后一个报价栏之后匹配所有内容。所以我试图在最后一次出现“引用”后匹配所有内容? Idk如果这是最好的解决方案,但它是我一直在尝试的。
我会说实话,我对这个正则表达式的东西很感兴趣..这就是我一直在尝试的结果..
regex = /(quote\].+)(.*)/ig; // Returns null
regex = /.+((quote\]).+)$/ig // Returns null
regex = /( .* (quote\]) .*)$/ig // Returns null
我已经为任何人在这里玩了一个JSfiddle:
答案 0 :(得分:5)
一种选择是将所有内容匹配到最后/.*\[\/quote\](.*)$/i
,然后获取任何内容。 (example)
.*
这是有效的,因为\[\/quote\]
本质上是贪婪的,并且它会在最后\nThis is all the text I\'m wirting about myself.\n\nLook at me ma. Javascript.
之前匹配。
根据您提供的字符串,这将是第一个捕获组匹配:
.
但由于您的字符串包含新行,并且[\s\S]
与新行不匹配,因此您可以使用.
代替/[\s\S]*\[\/quote\]([\s\S]*)$/i
以匹配任何内容。
.slice()
您还可以避免正则表达式并使用.lastIndexOf()
method和var match = '[\/quote]';
var textAfterLastQuote = str.slice(str.lastIndexOf(match) + match.length);
document.getElementById('res').innerHTML = "Results: " + textAfterLastQuote;
:
.split()
或者,您也可以使用var textAfterLastQuote = str.split('[\/quote]').pop();
document.getElementById('res').innerHTML = "Results: " + textAfterLastQuote;
然后获取数组中的最后一个值:
$('#Select option[value="1"]').attr("selected", "selected");