近日需要一个代码高亮插件。由于没找到如blogjava这种所见即所得的,只找到一个动态分析的,所以使用到了正则替换。
代码:
1 //replace string with RegExp param
2 function testRegExp(){
3 var str_before = 'aaa[code:java]bbb[/code]ccc';
4 var reg = /(\[code:)([^\]]*)(\])([\s\S]*?)(\[\/code\])/g;
5 var str_after = str_before.replace(reg,"<pre class=\"brush:$2;\">$4</pre>");
6 alert("before: " + str_before + "\r\n" + "after: " + str_after);
7 }
执行结果为:
before: aaa[code:java]bbb[/code]ccc
after: aaa<pre class="brush:java;">bbb</pre>ccc
解释一下
reg:
每一个小括号为一个捕捉点,
reg里设置了5个,即为RegExp.$1 - RegExp.$5,在replace函数内可直接写为$1 - $5
其中的
([\s\S]*?)表示匹配所有的字符,包括换行符,且为最少匹配。