Jorge
Jorge

Reputation: 18237

Regular expression in javascript to get contents of <span> tags

I have a string with this form

<p>Central: <span class="fieldText">Central_Local</span>
<br>Area Resolutoria:  <span class="fieldText">Area_Resolutoria</span>
<br>VPI:  <span class="fieldText">VIP</span>

I'm trying to get the span elements, and find the values within

var message = currentMarker.get("mensaje");
var pat = new RegExp("^(.*?<span .*?>(.*?)</span>.*?)+$");
message.match(pat);

I need to get these values:

Central_Local
Area_Resolutoria
VIP
IP_ERX

How can this be done, or how can my regex be improved?

Upvotes: 1

Views: 2091

Answers (2)

Gabriele Petrioli
Gabriele Petrioli

Reputation: 196002

jQuery

var message = currentMarker.get("mensaje");
var contents = [];
$('<div>', {html: message }).find('span.fieldText').each(function(){
  contents.push( $(this).text() );
});

demo at http://jsfiddle.net/DfDPR/2/


Pure javascript

var message = currentMarker.get("mensaje");
var contents = [];

var div = document.createElement('div');
div.innerHTML = message;
var spans = div.getElementsByTagName('span');
for (var span = 0; span < spans.length; span++)
{
    contents.push(spans[span].innerHTML);
}

demo at http://jsfiddle.net/DfDPR/3/


As mentioned in the comments, regex is not a good candidate for parsing HTML...

Upvotes: 5

Shef
Shef

Reputation: 45589

Trivial task in jQuery:

var values = $('span.fieldText', message).map(function(){
    return $(this).text();
}).get();

values will be an array with all the values you need. You can iterate over it or do anything you like.

Upvotes: 3

Related Questions