I have this text
txt = "Local residents o1__have called g__in o22__with reports...";
in which I need to get the list of numbers between each o
and __
If I do
txt.match(/o([0-9]+)__/g);
I will get
["o1__", "o22__"]
But I'd like to have
["1", "22"]
How can I do that ?
See this question:
txt = "Local residents o1__have called g__in o22__with reports..."; var regex = /o([0-9]+)__/g var matches = []; var match = regex.exec(txt); while (match != null) { matches.push(match[1]); match = regex.exec(txt); } alert(matches);
You need to use .exec()
on a regular expression object and call it repeatedly with the g flag to get successive matches like this:
var txt = "Local residents o1__have called g__in o22__with reports..."; var re = /o([0-9]+)__/g; var matches; while ((matches = re.exec(txt)) != null) { alert(matches[1]); }
The state from the previous match is stored in the regular expression object as the lastIndex
and that's what the next match uses as a starting point.
You can see it work here: http://jsfiddle.net/jfriend00/UtF6J/
Using the regexp this way is described here: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/exec.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With