前两天碰到一个问题,就是想把一段文本中满足正则表达式匹配的所有项都用红色标记,醒目显示。
如果,要匹配的是一个固定的关键词,replace方法就可以轻松解决了,如果是多个匹配项,或者干脆是正则表达式匹配,那就只能想其他的办法了。
于是,看了js的正则帮助文档,使用如下的方法解决了问题。
js关键语句如下:
var origstr = "";//原始字符串
var reg = new RegExp("正则表达式", "mgi");
var retstr = origstr.replace(reg, function($1){return "<font color=red>"+ $1 + "</font>";});
retstr输出即可。
另:
在C#中,字符串和Regex都有replace方法,当然正则可以完成string的replace工作,但是当字符串比较小(个人认为几百字节以内)时,使用正则反而会造成性能低下。
如果要替换的为多个匹配项,宁可使用多次replace也会比使用正则有更好的性能。
另外附上一个小技巧:
在往页面填充大量html内容时,常用的做法是htmlobj.innerHTML = "";
测试发现,用label/span/td填充一个50k的html内容,时间基本在20秒以上,而用div/p填充,基本在1-2秒就好了。