最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Javascript Regex match everything after last occurrence of string - Stack Overflow

programmeradmin2浏览0评论

I am trying to match everything after (but not including!) the last occurrence of a string in JavaScript.

The search, for example, is:

[quote="user1"]this is the first quote[/quote]\n[quote="user2"]this is the 2nd quote and some url /[/quote]\nThis is all the text I\'m wirting about myself.\n\nLook at me ma. Javascript.

Edit: I'm looking to match everything after the last quote block. So I was trying to match everything after the last occurrence of "quote]" ? Idk if this is the best solution but its what i've been trying.

I'll be honest, i suck at this Regex stuff.. here is what i've been trying with the results..

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

I have made a JSfiddle for anyone to have a play with here:

/

I am trying to match everything after (but not including!) the last occurrence of a string in JavaScript.

The search, for example, is:

[quote="user1"]this is the first quote[/quote]\n[quote="user2"]this is the 2nd quote and some url https://www.google./[/quote]\nThis is all the text I\'m wirting about myself.\n\nLook at me ma. Javascript.

Edit: I'm looking to match everything after the last quote block. So I was trying to match everything after the last occurrence of "quote]" ? Idk if this is the best solution but its what i've been trying.

I'll be honest, i suck at this Regex stuff.. here is what i've been trying with the results..

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

I have made a JSfiddle for anyone to have a play with here:

https://jsfiddle/au4bpk0e/

Share Improve this question edited Jan 9, 2016 at 20:45 ManreeRist asked Jan 9, 2016 at 20:41 ManreeRistManreeRist 5045 silver badges12 bronze badges 3
  • 2 I don't understand what you want to match. The last occurence of what string in your string? – timgeb Commented Jan 9, 2016 at 20:43
  • Sorry your right, I'm trying to match everything after the last quote... – ManreeRist Commented Jan 9, 2016 at 20:44
  • 1 Then why use regex at all? Use substring with lastIndexOf. – Wiktor Stribiżew Commented Jan 9, 2016 at 21:05
Add a ment  | 

1 Answer 1

Reset to default 8

One option would be to match everything up until the last [/quote], and then get anything following it. (example)

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

This works since .* is inherently greedy, and it will match every up until the last \[\/quote\].

Based on the string you provided, this would be the first capturing group match:

\nThis is all the text I\'m wirting about myself.\n\nLook at me ma. Javascript.

But since your string contains new lines, and . doesn't match newlines, you could use [\s\S] in place of . in order to match anything.

Updated Example

/[\s\S]*\[\/quote\]([\s\S]*)$/i

You could also avoid regex and use the .lastIndexOf() method along with .slice():

Updated Example

var match = '[\/quote]';
var textAfterLastQuote = str.slice(str.lastIndexOf(match) + match.length);
document.getElementById('res').innerHTML = "Results: " + textAfterLastQuote;

Alternatively, you could also use .split() and then get the last value in the array:

Updated Example

var textAfterLastQuote = str.split('[\/quote]').pop();
document.getElementById('res').innerHTML = "Results: " + textAfterLastQuote;
发布评论

评论列表(0)

  1. 暂无评论