• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 438
  • Last Modified:

JavaScript / jQuery RegEx Replacement

Hello,

I'm trying to use jQuery to replace some extraneous data that's hard-coded into a CMS I'm using. The text contains anchor links, but is displayed as such:

PANASONIC > Panasonic Upright Vacuums > MC-V5241-02
PANASONIC > Panasonic Upright Vacuums > MC-UL675-00
PANASONIC > Panasonic Upright Vacuums > MC-UL671-00

Open in new window


I'm trying to cut it down to display like this, but with the proper link attached to the last item:

>> MC-V5241-02
>> MC-UL675-00
>> MC-UL671-00

Open in new window


I tried using this code

<div>
	<a href="http://www.vacpartswarehouse.com/PANASONIC-vacuums-bags-belts-brushes-parts-and-accessories-s/124.htm"> PANASONIC</a> > <a href="http://www.VacPartsWarehouse.com/Panasonic-Upright-Vacuums-s/5385.htm" title="Panasonic Upright Vacuums"> Panasonic Upright Vacuums</a> > <a href="http://www.VacPartsWarehouse.com/MC-V5241-02-s/5411.htm" title="MC-V5241-02"> MC-V5241-02</a><br />
	<a href="http://www.vacpartswarehouse.com/PANASONIC-vacuums-bags-belts-brushes-parts-and-accessories-s/124.htm"> PANASONIC</a> > <a href="http://www.VacPartsWarehouse.com/Panasonic-Upright-Vacuums-s/5385.htm" title="Panasonic Upright Vacuums"> Panasonic Upright Vacuums</a> > <a href="http://www.VacPartsWarehouse.com/MC-UL675-00-s/5424.htm" title="MC-UL675-00"> MC-UL675-00</a><br />
	<a href="http://www.vacpartswarehouse.com/PANASONIC-vacuums-bags-belts-brushes-parts-and-accessories-s/124.htm"> PANASONIC</a> > <a href="http://www.VacPartsWarehouse.com/Panasonic-Upright-Vacuums-s/5385.htm" title="Panasonic Upright Vacuums"> Panasonic Upright Vacuums</a> > <a href="http://www.VacPartsWarehouse.com/MC-UL671-00-s/5425.htm" title="MC-UL671-00"> MC-UL671-00</a><br />
</div>
<script>
	jQuery('div').each(function(){
		var div = $(this);
 		div.html(
			div.text().replace('<a href="http://www\.vacpartswarehouse.com\.com/(((?!/).)*)/\d{3,4}\.htm">(((?!</a>).)*)</a> ', ''
        )
    )
});
</script>

Open in new window


and got the following, all in plain text

PANASONIC > Panasonic Upright Vacuums > MC-V5241-02 PANASONIC > Panasonic Upright Vacuums > MC-UL675-00 PANASONIC > Panasonic Upright Vacuums > MC-UL671-00

Open in new window


I'm pretty inexperienced in both jQuery and regular expressions, so I'm sure I'm missing something simple, but I don't know what. I've attached the test file I'm using in case I'm missing something there.

Thank you in advance for your help,
B
0
vacpartswarehouse
Asked:
vacpartswarehouse
1 Solution
 
themrrobertCommented:
Well when I look at the regular expression, it seems to be doing exactly what you say.

which is find an string like <a href=.....\d{3,4}.>ignore stuff in middle(continuematching:)</a>

so it strips all that out.

maybe you can try matching the 3 instances of link : (ie href="(link)"), and also match the 3 anchor text strings, and then do something like this.

str.replace('newregex','&gt;&gt; <a href="\5">\6</a>')  the \5 matches the 5th match within () parenthesis, and \6 matches the 6th.

Keep that in mind, sorry it's not a more specific solution but javascript regex's isn't my strong suit.
0
 
hieloCommented:
<div>
	<a href="http://www.vacpartswarehouse.com/PANASONIC-vacuums-bags-belts-brushes-parts-and-accessories-s/124.htm"> PANASONIC</a> > <a href="http://www.VacPartsWarehouse.com/Panasonic-Upright-Vacuums-s/5385.htm" title="Panasonic Upright Vacuums"> Panasonic Upright Vacuums</a> > <a href="http://www.VacPartsWarehouse.com/MC-V5241-02-s/5411.htm" title="MC-V5241-02"> MC-V5241-02</a><br />
	<a href="http://www.vacpartswarehouse.com/PANASONIC-vacuums-bags-belts-brushes-parts-and-accessories-s/124.htm"> PANASONIC</a> > <a href="http://www.VacPartsWarehouse.com/Panasonic-Upright-Vacuums-s/5385.htm" title="Panasonic Upright Vacuums"> Panasonic Upright Vacuums</a> > <a href="http://www.VacPartsWarehouse.com/MC-UL675-00-s/5424.htm" title="MC-UL675-00"> MC-UL675-00</a><br />
	<a href="http://www.vacpartswarehouse.com/PANASONIC-vacuums-bags-belts-brushes-parts-and-accessories-s/124.htm"> PANASONIC</a> > <a href="http://www.VacPartsWarehouse.com/Panasonic-Upright-Vacuums-s/5385.htm" title="Panasonic Upright Vacuums"> Panasonic Upright Vacuums</a> > <a href="http://www.VacPartsWarehouse.com/MC-UL671-00-s/5425.htm" title="MC-UL671-00"> MC-UL671-00</a><br />
</div>
<script>
	jQuery('div').each(function(){
		var div = $(this);
		var result=div.html().match( /(<a[^>]+>[^<>]+<\/a>)<br\s*\/?>/gi );
		div.html( "&gt;&gt; " + result.join("&gt;&gt; ") );

	});
</script>

Open in new window

0
 
vacpartswarehouseAuthor Commented:
That worked perfectly! Thank you so much for your help!
0

Featured Post

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now