Javascript Regex: How to bold specific words with regex?

前端 未结 4 1650
礼貌的吻别
礼貌的吻别 2020-12-10 05:56

Given a needle and a haystack... I want to put bold tags around the needle. So what regex expression would I use with replace()? I want SPACE to be the delimeter and I want

相关标签:
4条回答
  • 2020-12-10 06:08

    Here is a regex to do what you're looking for:

    (^|\s)(cows)(\s|$)
    

    In JS, replacement is like so:

    myString.replace(/(^|\s)(cows)(\s|$)/ig, '$1<b>$2</b>$3');
    

    Wrapped up neatly in a reusable function:

    function updateHaystack(input, needle) {
        return input.replace(new RegExp('(^|\\s)(' + needle + ')(\\s|$)','ig'), '$1<b>$2</b>$3');
    }
    
    var markup = document.getElementById('somediv').innerHTML;
    var output = updateHaystack(markup, 'cows');
    document.getElementById('somediv').innerHTML = output;
    
    0 讨论(0)
  • 2020-12-10 06:09
    var needle = 'cows';
    
    var regexp = new RegExp('(^|\s)('+needle+')(\s|$)', 'ig');
    
    var old_string = 'cows at www.cows.com, milk some COWs';
    
    var new_string = old_string.replace(regexp, '<b>$1$2$3</b>');
    
    0 讨论(0)
  • 2020-12-10 06:15

    For those who don't want SPACE as the delimiter, simply don't use \s.

    function updateHaystack(input, needle) 
    {
     return input.replace(new RegExp('(^|)(' + needle + ')(|$)','ig'), '$1<b>$2</b>$3');
    }
    

    Worked for me.

    0 讨论(0)
  • 2020-12-10 06:23
    findstring: /(^|\s)(cows)(\s|$)/ig
    newstring: '$1<b>$2</b>$3'
    

    The \b markers are for "word boundaries"; the /ig flags are for case-ignoring and global matching, respectively.

    The usage of the () captures and then $1/$2/$3 in the new string text is so that the capitalization and spacing of whatever was matched will be preserved.

    0 讨论(0)
提交回复
热议问题