Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace all instances of a pattern with regular expressions in Javascript / jQuery

First off I don't know much about regex and need to buy a book because it's has proven to me to be difficult to pickup.

Ultimately I want to take a dom element, and replace text within straight brackets "[" and "]" and insert a link around the text, and there may be multiple bracket sets in the string.

function changeTip() {  
        var link = '<a href="' + $('#txtURL').attr('value') + '" target="_blank">';
        $('.tipoftheweektip').html($('#txtTip').attr("value").replace('[', link).replace(']', '</a>'));
    }

This works except:

  • doesnt work on the second set of brackets
  • if there isnt a closing straight bracket, it deletes all the text before the opening straight bracket

I've looked at examples and because straight brackets are used in the regex code, I cant figure out how to look for a bracket and replace it.

Anyone out there that has done something similar that they can share? Thanks in advance.

like image 926
jonathan hall Avatar asked Dec 23 '22 10:12

jonathan hall


1 Answers

.replace(/\[([^\]]*)\]/g, link + "$1</a>")

which means, find text between [ and ] and replace it with the value of link, the text itself and ''. This ensures matching square brackets. The 'g' means 'do it multiple times (globally)'.

like image 152
Doug Domeny Avatar answered Dec 24 '22 22:12

Doug Domeny