Regex match text between tags
javascript, regex
Solution
/<b>(.*?)<\/b>/g
Add `g` (global) flag after:
/<b>(.*?)<\/b>/g.exec(str)
//^-----here it is
However if you want to get all matched elements, then you need something like this:
var str = "<b>Bob</b>, I'm <b>20</b> years old, I like <b>programming</b>.";
var result = str.match(/<b>(.*?)<\/b>/g).map(function(val){
return val.replace(/<\/?b>/g,'');
});
//result -> ["Bob", "20", "programming"]
If an element has attributes, regexp will be:
/<b [^>]+>(.*?)<\/b>/g.exec(str)
Problem
I have this string: ``` My name is <b>Bob</b>, I'm <b>20</b> years old, I like <b>programming</b>. ``` I'd like to get the text between `b` tags to an array, that is: ``` ['Bob', '20', 'programming'] ``` I tried this `/<b>(.*?)<\/b>/.exec(str)` but it will only get the first text.