想要模拟微博的网页显示中的 @用户名 和话题 #话题标题# 用不同颜色高亮,我自己想的是 用@ 和用户名后面的空格作为标记,用js的正则就能从一句话中截取出想要的 “@用户名” 这个字符串,再高亮。 话题同理,用两个#作为标记从一句话中截取出想要的 “#话题标题#”,并高亮。可是我不会用js的正则,不会写,请高手教我。
自己写了段,可是是错的。function manageTopicTitle(str){
var res = /^[^#\]#*$/;
var reg = new RegExp(res);
alert("oopp");
    if(reg.test(str)){

test = str;
return test;

}else{
$.each(str.match(/[^#]+(?=\#)/g), function(i, word) {
str = str.replace('#'+word+'#', '<a class="高亮">#'+word+'#</a>');
});
test = str;
    return test;
}
}JavaScript正则函数

解决方案 »

  1.   

    这个功能的实现 比较笨点的  可以不用正则var _str = $("xx").html(),
        _key_word = "xxx",
        _al = _str.split( _key_word );
    _str = _al.join("<a class='xx'>" + _key_word  + "</a>");
      

  2.   

    楼上的这种也可以撒,其实你这些数据正常的话都是动态的,后台拼接成html格式的就行了。
      

  3.   

    <script type="text/javascript">
    var html="ssssss @用户名 和话题 #话题标题# 用不同颜色高@假的亮 @用户名2 和sss#此话题不对呀#ss";
    var reg1=/( @[^ ]* )/g;
    var reg2=/( #[^#]*# )/g;
        html=html.replace(reg1,"<span style='color:red'>$1</span>");
        html=html.replace(reg2,"<span style='color:green;'>$1</span>");
        document.write(html);
    </script>