当前位置:  开发笔记 > 编程语言 > 正文

Javascript正则表达式匹配最后一次出现的字符串后的所有内容

如何解决《Javascript正则表达式匹配最后一次出现的字符串后的所有内容》经验,为你挑选了1个好方法。

我试图匹配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.

编辑:我正在寻找匹配最后一个引号块之后的所有内容。所以我想匹配最后一次出现的“ quote]”之后的所有内容吗?Idk,如果这是最好的解决方案,但我一直在尝试。

老实说,我很喜欢Regex的东西..这就是我一直在尝试的结果。

regex = /(quote\].+)(.*)/ig; // Returns null 
regex = /.+((quote\]).+)$/ig // Returns null  
regex = /( .* (quote\]) .*)$/ig  // Returns null   

我制作了一个JSfiddle,供任何人在这里玩:

https://jsfiddle.net/au4bpk0e/



1> Josh Crozier..:

一种选择是将所有内容匹配到最后一个[/quote],然后再获取所有内容。(例)

/.*\[\/quote\](.*)$/i

这是有效的,因为.*它本质上是贪婪的,它将与每一个匹配,直到最后一个\[\/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

你也可以避开正则表达式,并使用.lastIndexOf()方法连同.slice()

更新示例

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;

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有