近日需要一個代碼高亮插件。由于沒找到如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]*?)表示匹配所有的字符,包括換行符,且為最少匹配。