wong2 wong2 - 2 months ago 20
Javascript Question

Regex match text between tags

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.

Answer Source
/<b>(.*?)<\/b>/g

Regular expression visualization

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"]