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

15,637
.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)'.

Share:
15,637
jonathan hall
Author by

jonathan hall

Updated on July 28, 2022

Comments

  • jonathan hall
    jonathan hall almost 2 years

    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.