【问题标题】:Javascript Regex: How to bold specific words with regex?Javascript 正则表达式:如何用正则表达式加粗特定单词?
【发布时间】:2009-08-04 23:34:32
【问题描述】:

给定一根针和一个干草堆...我想在针周围加上粗体标签。那么我将在 replace() 中使用什么正则表达式?我希望 SPACE 成为分隔符,并且我希望搜索不区分大小写

所以说针是“牛”,干草堆是

cows at www.cows.com, milk some COWS

会变成

<b>cows</b> at www.cows.com, milk some <b>COWS</b>

关键字也应该可以有空格,所以如果关键字是“谁是mgmt”...

great band. who is mgmt btw? 

会变成

great band. <b>who is mgmt</b> btw? 

谢谢

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    这是一个正则表达式,可以满足您的需求:

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

    在JS中,替换是这样的:

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

    整齐地包装在一个可重用的函数中:

    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;
    

    【讨论】:

    • 有错字吗?函数boldKeywords(关键字,干草堆){ for(var c = 0; c $2$3'); } 返回干草堆; } 出于某种原因,代码没有加粗任何东西。谢谢
    • updateHaystack('www.cows.com 的奶牛,挤奶','奶牛');没有加粗任何东西,但是 updateHaystack('www.cows.com 上的奶牛,挤奶', 'cow');将奶牛更改为 cows
    • @inktri 好地方。当然 'cow'/'cows' 是这里的一个例子。我没有逃脱我的 \s - 这是固定的。
    【解决方案2】:

    对于那些不想用 SPACE 作为分隔符的人,干脆不要使用\s

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

    为我工作。

    【讨论】:

      【解决方案3】:
      findstring: /(^|\s)(cows)(\s|$)/ig
      newstring: '$1<b>$2</b>$3'
      

      \b 标记用于“单词边界”; /ig 标志分别用于忽略大小写和全局匹配。

      使用 () 捕获,然后在新字符串文本中捕获 $1/$2/$3,以便保留匹配的任何内容的大小写和间距。

      【讨论】:

        【解决方案4】:
        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>');
        

        【讨论】:

        • 您的示例不起作用,因为它需要在针前后都有一个空格,而 old_string 中的任何“奶牛”实例都不是这种情况。
        • 他说他想要空格作为分隔符。为了使它与字符串的开头和结尾一起工作,它可能是 '(^|\s)'+needle+'(\s|$)' 未测试,但我认为应该可以工作
        猜你喜欢
        • 1970-01-01
        • 2021-04-20
        • 2021-04-20
        • 1970-01-01
        • 2022-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        相关资源
        最近更新 更多