2016-06-07 141 views
-1

开头任何字我想将任何以“@”字符开头的单词设置为“粗体”字体;例如替换字符串:使粗体字以@

'@xyzharris具有猫@zynPeter'

与:

'@xyzHarris具有猫@zynPeter'

+0

哪种语言是你在用吗? – RamenChef

+0

javascript和jQuery – user21

回答

2
  1. 如果你的目标元素不包含任何的子元素简单变种):

$("p:contains(@)").html(function(i, h){ 
 
return h.replace(/(@\w+)/g, '<b>$1</b>'); 
 
});
b{color:red;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p>@xyzharris has a cat @zynPeter</p> 
 
<p>This is @roko answer to @user21.</p> 
 
<p>@cats like @dogs. A lot.</p>

只要确保你有你的p选择内纯弦。否则,

  • 如果包含内部子元素目标单元:
  • $('p, p *').contents().filter(function() { 
     
        return this.nodeType === 3; 
     
    }).text(function(i, t) { 
     
        $(this).replaceWith(t.replace(/(@\w+)/g, '<b>$1</b>')); 
     
    });
    b{color:red;}
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
     
    
     
    <p><a href="#">@xyzharris has a</a> cat @zynPeter</p> 
     
    <p>This is <span>@roko answer</span> to @user21.</p> 
     
    <p>@cats <i>like @dogs</i>. <span>A lot</span>.</p>

    在正则表达式你上面看到我用\w代表

    \w匹配任何字母,数字或下划线。

    这对于@ us3rn4_me来说似乎相当酷。如果您想确保匹配任何字符而不是空格而不是使用:

    \S匹配除空格,制表符或换行符以外的任何其他字符。根据需要

    +量词确保重复以前\w表达

    +一个无限次,多次地,用之于[贪婪]