Could someone please help me with the regexp javascript code to replace all <br />
tags with a newline "\n" character found within <pre>
divisions.. For example, a string passed to the function containing the following:
<pre class="exampleclass">1<br />2<br />3</pre>
Should be returned as (newlines not shown, though I hope you get the idea):
<pre class="exampleclass">1(newline)2(newline)3</pre>
Another example:
<div>foo<br />bar<pre>1<br />2</pre></div>
Returned as:
<div>foo<br />bar<pre>1(newline)2</pre></div>
Note that the class and division content is dynamic, along with other content in the string (other divs etc). On the other hand, the <br />
tag does not change, so there's no need to cater for <br>
or other variants.
NB - I'm working with strings, not HTML elements.. Just in case there is any confusion by the way I have presented the question.
You could use
str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g);
And then for all matches
replaced = match.replace(/<br \/>/g, '\n');
str.replace(match, replaced);
So probably something like this:
var matches = str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g),
len = matches.length,
i;
for (i = 0; i < len; i++) {
str = str.replace(matches[i], matches[i].replace(/<br \/>/g, '\n'));
}
EDIT: changed to match <pre class="">
as well.
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