问题不在正则上,而在于你的循环
把arrayKeywords.join(",")成一个字符串,然后用正则匹配,在拆分就会快很多

解决方案 »

  1.   

    如我们伟大的2楼所说。。
    var re = new RegExp("(" + arrayKeywords.join("|") + ")", "gi");
    content = content.replace(re ,"<strong>$1</strong>");
      

  2.   

    re= new RegExp("(.*?)"+keyword+"(.*?)", "i");
    换成
    re= new RegExp("("+keyword+")", "i");
    用10ms就可以了,这个.*?太耗内存了
      

  3.   

    问题在于你的表达式上,直接用
    content.replace(keyword,"<b>"+keyword+"</b>");
    就可以了。看搂主的表达式,好像是每个关键字只替换一次?推荐搂主:
    http://www.regexlab.com/zh/regref.htm
      

  4.   

    <script type="text/javascript">
    var keywords = new Array(2);
    keywords[0] = ["wc1", "wc2", "wc3"];
    keywords[1] = [];
    keywords[1]["wc1"] = "nwc1";
    keywords[1]["wc2"] = "nwc2";
    keywords[1]["wc3"] = "nwc3";var p = new RegExp("(" + arrayKeywords.join("|") + ")", "gi");
    var j = content.replace(p, function (a, b) {
    return "<strong>" + keywords[1][b] + "</strong>";
    });
    //这个在效率上应该比你FOR那个好很多。
    </script>
      

  5.   

    var p = new RegExp("(" + keywords[0].join("|") + ")", "gi");
    忘记改了。。