shawl.qiu Javascript 语法高亮函数 v1.0
说明:很久前就想写一个语法高亮的函数了, 不过因为N多原因, 因此没有写.
现在所有条件都具备了, 不写对不起自己对不起广大人民群众呀.
目录:
- /*------------------------------------------------------------*/
- * shawl.qiu Javascript 语法高亮函数 v1.0
- * ---/----------------------------------
- * 参数说明:
- * sStr: 字符串, 要进行语法高亮的字符串.
- * sOpt: 字符串, 要进行语法高亮的语言, all 为编码全部可用语法(目前只有 xml, javascript 选项).
- * 注: 后续版本将会逐渐支持: css, html, xhtml, asp/vbscript,
- * asp/jscript, c#.net, Jscript.net, T-SQL.
- * 特别注意: 本函数采用 ###字符### 作为特别标记, 因此, 为了不出错,请将 # 字符进行编码.
- * 如: # -> #
- /*------------------------------------------------------------*/
1. 函数 fHighlight(sStr, sOpt)
2. 使用演示.
shawl.qiu
2006-12-11
http://blog.csdn.net/btbtd
1. 函数 fHighlight(sStr, sOpt)
- <script type="text/javascript">
- //<![CDATA[
- /*------------------------------------------------------------*/
- * shawl.qiu Javascript 语法高亮函数 v1.0
- * ---/----------------------------------
- * 参数说明:
- * sStr: 字符串, 要进行语法高亮的字符串.
- * sOpt: 字符串, 要进行语法高亮的语言, all 为编码全部可用语法(目前只有 xml, javascript 选项).
- * 注: 后续版本将会逐渐支持: css, html, xhtml, asp/vbscript,
- * asp/jscript, c#.net, Jscript.net, T-SQL.
- * 特别注意: 本函数采用 ###字符### 作为特别标记, 因此, 为了不出错,请将 # 字符进行编码.
- * 如: # -> #
- /*------------------------------------------------------------*/
- //-------------------------begin function fHighlight(sStr, sOpt)-----------------------//
- function fHighlight(sStr, sOpt){
- if(!sStr||sStr.replace(//s+/g,'').length<0)return false;
- if(!sOpt) var sOpt='all';
- sOpt=sOpt.toLowerCase();
- try{return rpls(sStr, sOpt)}catch(e){};
- function rpls(sStr, sOpt){
- if(!sOpt) var sOpt='all';
- //------------------------------begin script
- if(//bjavascript/b/ig.test(sOpt)||sOpt=='all'){
- sStr=sStr.replace(//</;script.*?/>/;[/s/S]*?/</;//script/>/;/gi,
- function (m){
- m=m.replace(/(/</;script.*?/>/;)([/s/S]*?)(/</;//script/>/;)/ig, function ($1,$2,$3,$4){
- $2=$2.replace(//</;script.*?/>/;/ig, function (m_){
- m_=m_.replace(/([a-z]+)/=(/'|/")(/S+)/2/gi,
- '<span style="color:blue;">$1</span>=$2<span style="color:fuchsia;">$3</span>$2');
- m_=m_.replace(//</;script/i,'/</;<span style="color:red">script</span>');
- return m_;
- });
- // main block
- $3=$3.replace(/(/!/=/=|/=/=/=)/g,'###$1###');
- $3=$3.replace(/([^#=!*///])(/!/=|/=/=)/g,'$1###$2###');
- $3=$3.replace(/([^#=!*///])(/=)/g,'$1###$2###');
- $3=$3.replace(/([/w]+)/.([^!=><]*)(/(|/[/{|)([^!=><]*)(/)|/}|/})/gi,function(m_){
- m_=m_.replace(/(/(|/[|/{)(.*?)(/}|/]|/))/gi,'$1<span style="color:fuchsia">$2</span>$3');
- return m_.fontcolor('blue');
- })
- $3=$3.replace(/([a-z.0-9/[/]/-/+_]+)( |)([#]{3}(/!|/=|/*|//))/gi,function($1_,$2_, $3_, $4_){
- if(/(/[|/()/.test($2_)>-1){
- $2_=$2_.replace(/(/[|/))(.*?)(/)|/])/g,'$1<span style="color:fuchsia;">$2</span>$3' );
- }
- $2_='<span style="color:blue;">'+$2_+'</span>';
- return $2_+$3_+$4_;
- })
- $3=$3.replace(/([#]{3}[^a-z0-9]*?[#]{3})([^<>]+)/g, function($1_, $2_, $3_){
- $3_=$3_.replace(/(/{|/(|/[)([^/(/{/[]+)(/)|/}|/])/g,
- '$1<span style="color:fuchsia;">$2</span>$3');
- $3_='<span style="color:red;">'+$3_+'</span>';
- return $2_+$3_;
- })
- var re=new RegExp('(else|if|while|alert|var|try|catch|finaly|for|switch|case|'+
- 'default|function|return|break|null|false|true|new)','gi');
- $3=$3.replace(re,function($1){
- $1='<span style="font-weight:bold;">'+$1+'</span>';
- return $1;
- });
- // CDATA
- $3=$3.replace(/(/!/[)(CDATA)(/[)/gi,'$1<span style="font-weight:bold;">$2</span>$3');
- $3=$3.replace(/[#]{3}(.+?)[#]{3}/gi,'<span style="color:orange;">$1</span>');
- $3=$3.replace(/([^<>]+)/g,'//<span style="color:ccc;">$1</span>');
- $3=$3.replace(*[/s/S]*?/*///g,function(m_){
- m_=m_.replace(/>([/s/S]*?)</g,'><span style="color:#ccc;">$1</span><');
- return m_;
- });
- $3=$3.replace(*([^<>]+)/*///g,'/*<span style="color:#ccc">$1</span>*/');
- $4=$4.replace(/script/i,'<span style="color:red">script</span>');
- return $2+$3+$4;
- });
- return m;
- });
- }
- //------------------------------end script
- // begin xml
- if(//bxml/b/gi.test(sOpt)||sOpt=='all'){
- // XML
- sStr=sStr.replace(//</;/?xml[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/[a-z]+/=(/'|/").*?/1/gi,function(m_){
- m_=m_.replace(/(/'|")(.*?)/1/, '$1<span style="color:fuchsia;">$2</span>$1')
- m_=m_.replace(/(.*?)/=/,'<span style="color:blue;">$1</span>=');
- return m_;
- });
- m=m.replace(//?([a-z-]+)/i,'?<span style="color:red;">$1</span>')
- return m;
- } );
- // ELEMENT
- sStr=sStr.replace(//</;/!ELEMENT[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^(?,*+)|]+) /gi,' <span style="color:blue;">$1</span> ');
- m=m.replace(/(!ELEMENT)/gi,'<span style="color:red;">$1</span>');
- m=m.replace(//(([/s/S]+)/)/gi,function ($1){
- return $1.replace(/([/S]+)/gi,'<span style="color:fuchsia;">$1</span>')
- }
- );
- return m;
- } );
- // ATTLIST
- sStr=sStr.replace(//</;/!ATTLIST[^><]+(/>/;|)/gi, function(m){
- // <!ATTLIST title id CDATA #IMPLIED>
- m=m.replace(/ ([^#]+)/g, ' <span style="color:blue;">$1</span>');
- m=m.replace(/([#][^&]+)/g,'<span style="color:fuchsia">$1</span>');
- m=m.replace(/(!ATTLIST)/gi,'<span style="color:red;">$1</span>');
- return m;
- } );
- // ATTLIST 1
- sStr=sStr.replace(//</;/!ATTLIST[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(ATTLIST)/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // DOCTYPE
- sStr=sStr.replace(//</;/!DOCTYPE[^><]+(/>/;|)/[/gi, function(m){
- m=m.replace(/ (/S+) /gi,' <span style="font-weight:bold">$1</span> ');
- m=m.replace(//!(DOCTYPE)/gi, '!<span style="color:red">$1</span>');
- return m;
- } );
- // IGNORE
- sStr=sStr.replace(//</;/!/[ (IGNORE|INCLUDE)[^><]+(/]/]/>/;|/>/;|)/gi, function(m){
- m=m.replace(/(/</;!/[) (IGNORE|INCLUDE)/,'$1 <span style="font-weight:bold">$2</span>');
- m=m.replace(/([^!])/[([/S ]+)/]/,'$1[<span style="color:fuchsia">$2</span>]')
- return m;
- } );
- // DOCTYPE 1
- sStr=sStr.replace(//</;/!DOCTYPE[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(DOCTYPE)/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // NOTATION
- sStr=sStr.replace(//</;/!NOTATION[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(NOTATION)/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // ENTYT(Y|IES)
- sStr=sStr.replace(//</;/!ENTIT(Y|IES)[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(ENTIT(Y|IES))/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // </markup/>
- sStr=sStr.replace(//</;(//|)[a-z0-9_/-:]+(/>/;| ///>/;|///>/;)/gi, function(m){
- m=m.replace(/(/</;(//|))([a-z0-9_/-:]+)/gi,'$1<span style="color:red;">$3</span>');
- return m;
- } );
- // <markup pram='value'/>
- sStr=sStr.replace(/<[^<>]+/=[^><]+(///>/;|/>/;|)/gi, function(m){
- m=m.replace(/([a-z:]+)( |)/=/gi,'<span style="color:blue;">$1</span>$2###=###');
- m=m.replace(/[#]{3}/=[#]{3}(/'|")([^<>'"]+)/g,
- '=$1<span style="color:fuchsia;">$2</span>');
- m=m.replace(//#{3}/=/#{3}/g,'=');
- m=m.replace(/(/</;)([^<>]+)/,'$1<span style="color:red;">$2</span>');
- return m;
- } );
- }
- //------------------------------end xml
- return sStr;
- }
- }
- //-------------------------end function fHighlight(sStr, sOpt)-------------------------//
- onload=function(){
- document.body.innerHTML=fHighlight(document.body.innerHTML, 'javascript xml');
- }
- //]]>
- </script>
2. 使用演示.
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>shawl.qiu template</title>
- <script type="text/javascript">
- //<![CDATA[
- /*------------------------------------------------------------*/
- * shawl.qiu Javascript 语法高亮函数 v1.0
- * ---/----------------------------------
- * 参数说明:
- * sStr: 字符串, 要进行语法高亮的字符串.
- * sOpt: 字符串, 要进行语法高亮的语言, all 为编码全部可用语法(目前只有 xml, javascript 选项).
- * 注: 后续版本将会逐渐支持: css, html, xhtml, asp/vbscript,
- * asp/jscript, c#.net, Jscript.net, T-SQL.
- * 特别注意: 本函数采用 ###字符### 作为特别标记, 因此, 为了不出错,请将 # 字符进行编码.
- * 如: # -> #
- /*------------------------------------------------------------*/
- //-------------------------begin function fHighlight(sStr, sOpt)-----------------------//
- function fHighlight(sStr, sOpt){
- if(!sStr||sStr.replace(//s+/g,'').length<0)return false;
- if(!sOpt) var sOpt='all';
- sOpt=sOpt.toLowerCase();
- try{return rpls(sStr, sOpt)}catch(e){};
- function rpls(sStr, sOpt){
- if(!sOpt) var sOpt='all';
- //------------------------------begin script
- if(//bjavascript/b/ig.test(sOpt)||sOpt=='all'){
- sStr=sStr.replace(//</;script.*?/>/;[/s/S]*?/</;//script/>/;/gi,
- function (m){
- m=m.replace(/(/</;script.*?/>/;)([/s/S]*?)(/</;//script/>/;)/ig, function ($1,$2,$3,$4){
- $2=$2.replace(//</;script.*?/>/;/ig, function (m_){
- m_=m_.replace(/([a-z]+)/=(/'|/")(/S+)/2/gi,
- '<span style="color:blue;">$1</span>=$2<span style="color:fuchsia;">$3</span>$2');
- m_=m_.replace(//</;script/i,'/</;<span style="color:red">script</span>');
- return m_;
- });
- // main block
- $3=$3.replace(/(/!/=/=|/=/=/=)/g,'###$1###');
- $3=$3.replace(/([^#=!*///])(/!/=|/=/=)/g,'$1###$2###');
- $3=$3.replace(/([^#=!*///])(/=)/g,'$1###$2###');
- $3=$3.replace(/([/w]+)/.([^!=><]*)(/(|/[/{|)([^!=><]*)(/)|/}|/})/gi,function(m_){
- m_=m_.replace(/(/(|/[|/{)(.*?)(/}|/]|/))/gi,'$1<span style="color:fuchsia">$2</span>$3');
- return m_.fontcolor('blue');
- })
- $3=$3.replace(/([a-z.0-9/[/]/-/+_]+)( |)([#]{3}(/!|/=|/*|//))/gi,function($1_,$2_, $3_, $4_){
- if(/(/[|/()/.test($2_)>-1){
- $2_=$2_.replace(/(/[|/))(.*?)(/)|/])/g,'$1<span style="color:fuchsia;">$2</span>$3' );
- }
- $2_='<span style="color:blue;">'+$2_+'</span>';
- return $2_+$3_+$4_;
- })
- $3=$3.replace(/([#]{3}[^a-z0-9]*?[#]{3})([^<>]+)/g, function($1_, $2_, $3_){
- $3_=$3_.replace(/(/{|/(|/[)([^/(/{/[]+)(/)|/}|/])/g,
- '$1<span style="color:fuchsia;">$2</span>$3');
- $3_='<span style="color:red;">'+$3_+'</span>';
- return $2_+$3_;
- })
- var re=new RegExp('(else|if|while|alert|var|try|catch|finaly|for|switch|case|'+
- 'default|function|return|break|null|false|true|new)','gi');
- $3=$3.replace(re,function($1){
- $1='<span style="font-weight:bold;">'+$1+'</span>';
- return $1;
- });
- // CDATA
- $3=$3.replace(/(/!/[)(CDATA)(/[)/gi,'$1<span style="font-weight:bold;">$2</span>$3');
- $3=$3.replace(/[#]{3}(.+?)[#]{3}/gi,'<span style="color:orange;">$1</span>');
- $3=$3.replace(/([^<>]+)/g,'//<span style="color:ccc;">$1</span>');
- $3=$3.replace(*[/s/S]*?/*///g,function(m_){
- m_=m_.replace(/>([/s/S]*?)</g,'><span style="color:#ccc;">$1</span><');
- return m_;
- });
- $3=$3.replace(*([^<>]+)/*///g,'/*<span style="color:#ccc">$1</span>*/');
- $4=$4.replace(/script/i,'<span style="color:red">script</span>');
- return $2+$3+$4;
- });
- return m;
- });
- }
- //------------------------------end script
- // begin xml
- if(//bxml/b/gi.test(sOpt)||sOpt=='all'){
- // XML
- sStr=sStr.replace(//</;/?xml[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/[a-z]+/=(/'|/").*?/1/gi,function(m_){
- m_=m_.replace(/(/'|")(.*?)/1/, '$1<span style="color:fuchsia;">$2</span>$1')
- m_=m_.replace(/(.*?)/=/,'<span style="color:blue;">$1</span>=');
- return m_;
- });
- m=m.replace(//?([a-z-]+)/i,'?<span style="color:red;">$1</span>')
- return m;
- } );
- // ELEMENT
- sStr=sStr.replace(//</;/!ELEMENT[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^(?,*+)|]+) /gi,' <span style="color:blue;">$1</span> ');
- m=m.replace(/(!ELEMENT)/gi,'<span style="color:red;">$1</span>');
- m=m.replace(//(([/s/S]+)/)/gi,function ($1){
- return $1.replace(/([/S]+)/gi,'<span style="color:fuchsia;">$1</span>')
- }
- );
- return m;
- } );
- // ATTLIST
- sStr=sStr.replace(//</;/!ATTLIST[^><]+(/>/;|)/gi, function(m){
- // <!ATTLIST title id CDATA #IMPLIED>
- m=m.replace(/ ([^#]+)/g, ' <span style="color:blue;">$1</span>');
- m=m.replace(/([#][^&]+)/g,'<span style="color:fuchsia">$1</span>');
- m=m.replace(/(!ATTLIST)/gi,'<span style="color:red;">$1</span>');
- return m;
- } );
- // ATTLIST 1
- sStr=sStr.replace(//</;/!ATTLIST[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(ATTLIST)/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // DOCTYPE
- sStr=sStr.replace(//</;/!DOCTYPE[^><]+(/>/;|)/[/gi, function(m){
- m=m.replace(/ (/S+) /gi,' <span style="font-weight:bold">$1</span> ');
- m=m.replace(//!(DOCTYPE)/gi, '!<span style="color:red">$1</span>');
- return m;
- } );
- // IGNORE
- sStr=sStr.replace(//</;/!/[ (IGNORE|INCLUDE)[^><]+(/]/]/>/;|/>/;|)/gi, function(m){
- m=m.replace(/(/</;!/[) (IGNORE|INCLUDE)/,'$1 <span style="font-weight:bold">$2</span>');
- m=m.replace(/([^!])/[([/S ]+)/]/,'$1[<span style="color:fuchsia">$2</span>]')
- return m;
- } );
- // DOCTYPE 1
- sStr=sStr.replace(//</;/!DOCTYPE[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(DOCTYPE)/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // NOTATION
- sStr=sStr.replace(//</;/!NOTATION[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(NOTATION)/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // ENTYT(Y|IES)
- sStr=sStr.replace(//</;/!ENTIT(Y|IES)[^><]+(/>/;|)/gi, function(m){
- m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');
- m=m.replace(//!(ENTIT(Y|IES))/i,'!<span style="color:red;">$1</span>');
- m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');
- return m;
- } );
- // </markup/>
- sStr=sStr.replace(//</;(//|)[a-z0-9_/-:]+(/>/;| ///>/;|///>/;)/gi, function(m){
- m=m.replace(/(/</;(//|))([a-z0-9_/-:]+)/gi,'$1<span style="color:red;">$3</span>');
- return m;
- } );
- // <markup pram='value'/>
- sStr=sStr.replace(/<[^<>]+/=[^><]+(///>/;|/>/;|)/gi, function(m){
- m=m.replace(/([a-z:]+)( |)/=/gi,'<span style="color:blue;">$1</span>$2###=###');
- m=m.replace(/[#]{3}/=[#]{3}(/'|")([^<>'"]+)/g,
- '=$1<span style="color:fuchsia;">$2</span>');
- m=m.replace(//#{3}/=/#{3}/g,'=');
- m=m.replace(/(/</;)([^<>]+)/,'$1<span style="color:red;">$2</span>');
- return m;
- } );
- }
- //------------------------------end xml
- return sStr;
- }
- }
- //-------------------------end function fHighlight(sStr, sOpt)-------------------------//
- onload=function(){
- document.body.innerHTML=fHighlight(document.body.innerHTML, 'javascript xml');
- }
- //]]>
- </script>
- </head>
- <body>
- <div id="sqEditorMain" class="sqEditorMain"><pre class="sqPre"><ol><li><script type="text/javascript"></li><li>//<![CDATA[</li><li> /*------------------------------------------------------------*/</li><li> * shawl.qiu Javascript 语法高亮函数 v1.0</li><li> * ---/----------------------------------</li><li> * 参数说明:</li><li> * sStr: 字符串, 要进行语法高亮的字符串.</li><li> * sOpt: 字符串, 要进行语法高亮的语言, all 为编码全部可用语法(目前只有 xml, javascript 选项). </li><li> * 注: 后续版本将会逐渐支持: css, html, xhtml, asp/vbscript, </li><li> * asp/jscript, c#.net, Jscript.net, T-SQL.</li><li> * 特别注意: 本函数采用 ###字符### 作为特别标记, 因此, 为了不出错,请将 # 字符进行编码.</li><li> * 如: # -> &#35; </li><li> /*------------------------------------------------------------*/</li><li> //-------------------------begin function fHighlight(sStr, sOpt)-----------------------//</li><li> function fHighlight(sStr, sOpt){</li><li> if(!sStr||sStr.replace(//s+/g,'').length<0)return false;</li><li> if(!sOpt) var sOpt='all';</li><li> sOpt=sOpt.toLowerCase();</li><li> try{return rpls(sStr, sOpt)}catch(e){};</li><li> function rpls(sStr, sOpt){</li><li> if(!sOpt) var sOpt='all';</li><li> //------------------------------begin script</li><li> if(//bjavascript/b/ig.test(sOpt)||sOpt=='all'){</li><li> sStr=sStr.replace(//&lt/;script.*?/&gt/;[/s/S]*?/&lt/;//script/&gt/;/gi,</li><li> function (m){</li><li> m=m.replace(/(/&lt/;script.*?/&gt/;)([/s/S]*?)(/&lt/;//script/&gt/;)/ig, function ($1,$2,$3,$4){</li><li> $2=$2.replace(//&lt/;script.*?/&gt/;/ig, function (m_){</li><li> m_=m_.replace(/([a-z]+)/=(/'|/")(/S+)/2/gi,</li><li> '<span style="color:blue;">$1</span>=$2<span style="color:fuchsia;">$3</span>$2');</li><li> m_=m_.replace(//&lt/;script/i,'/&lt/;<span style="color:red">script</span>');</li><li> return m_;</li><li> });</li><li> // main block</li><li> $3=$3.replace(/(/!/=/=|/=/=/=)/g,'###$1###');</li><li> $3=$3.replace(/([^#=!*///])(/!/=|/=/=)/g,'$1###$2###');</li><li> $3=$3.replace(/([^#=!*///])(/=)/g,'$1###$2###');</li><li> $3=$3.replace(/([/w]+)/.([^!=><]*)(/(|/[/{|)([^!=><]*)(/)|/}|/})/gi,function(m_){</li><li> m_=m_.replace(/(/(|/[|/{)(.*?)(/}|/]|/))/gi,'$1<span style="color:fuchsia">$2</span>$3');</li><li> return m_.fontcolor('blue');</li><li> })</li><li> $3=$3.replace(/([a-z.0-9/[/]/-/+_]+)( |)([#]{3}(/!|/=|/*|//))/gi,function($1_,$2_, $3_, $4_){</li><li> if(/(/[|/()/.test($2_)>-1){</li><li> $2_=$2_.replace(/(/[|/))(.*?)(/)|/])/g,'$1<span style="color:fuchsia;">$2</span>$3' );</li><li> }</li><li> $2_='<span style="color:blue;">'+$2_+'</span>';</li><li> return $2_+$3_+$4_;</li><li> })</li><li> $3=$3.replace(/([#]{3}[^a-z0-9]*?[#]{3})([^<>]+)/g, function($1_, $2_, $3_){</li><li> $3_=$3_.replace(/(/{|/(|/[)([^/(/{/[]+)(/)|/}|/])/g,</li><li> '$1<span style="color:fuchsia;">$2</span>$3');</li><li> $3_='<span style="color:red;">'+$3_+'</span>';</li><li> return $2_+$3_;</li><li> })</li><li> var re=new RegExp('(else|if|while|alert|var|try|catch|finaly|for|switch|case|'+</li><li> 'default|function|return|break|null|false|true|new)','gi');</li><li> $3=$3.replace(re,function($1){</li><li> $1='<span style="font-weight:bold;">'+$1+'</span>';</li><li> return $1;</li><li> });</li><li> // CDATA</li><li> $3=$3.replace(/(/!/[)(CDATA)(/[)/gi,'$1<span style="font-weight:bold;">$2</span>$3');</li><li> $3=$3.replace(/[#]{3}(.+?)[#]{3}/gi,'<span style="color:orange;">$1</span>');</li><li> $3=$3.replace(/([^<>]+)/g,'//<span style="color:ccc;">$1</span>');</li><li> $3=$3.replace(*[/s/S]*?/*///g,function(m_){</li><li> m_=m_.replace(/>([/s/S]*?)</g,'><span style="color:#ccc;">$1</span><');</li><li> return m_;</li><li> });</li><li> $3=$3.replace(*([^<>]+)/*///g,'/*<span style="color:#ccc">$1</span>*/');</li><li> $4=$4.replace(/script/i,'<span style="color:red">script</span>');</li><li> return $2+$3+$4;</li><li> });</li><li> return m;</li><li> });</li><li> }</li><li> //------------------------------end script</li><li> // begin xml</li><li> if(//bxml/b/gi.test(sOpt)||sOpt=='all'){</li><li> // XML</li><li> sStr=sStr.replace(//&lt/;/?xml[^><]+(/&gt/;|)/gi, function(m){</li><li> m=m.replace(/[a-z]+/=(/'|/").*?/1/gi,function(m_){</li><li> m_=m_.replace(/(/'|")(.*?)/1/, '$1<span style="color:fuchsia;">$2</span>$1')</li><li> m_=m_.replace(/(.*?)/=/,'<span style="color:blue;">$1</span>='); </li><li> return m_;</li><li> });</li><li> m=m.replace(//?([a-z-]+)/i,'?<span style="color:red;">$1</span>')</li><li> return m;</li><li> } );</li><li> // ELEMENT</li><li> sStr=sStr.replace(//&lt/;/!ELEMENT[^><]+(/&gt/;|)/gi, function(m){</li><li> m=m.replace(/ ([^(?,*+)|]+) /gi,' <span style="color:blue;">$1</span> ');</li><li> m=m.replace(/(!ELEMENT)/gi,'<span style="color:red;">$1</span>');</li><li> m=m.replace(//(([/s/S]+)/)/gi,function ($1){</li><li> return $1.replace(/([/S]+)/gi,'<span style="color:fuchsia;">$1</span>')</li><li> }</li><li> );</li><li> return m;</li><li> } );</li><li> // ATTLIST</li><li> sStr=sStr.replace(//&lt/;/!ATTLIST[^><]+(/&gt/;|)/gi, function(m){</li><li> // &lt;!ATTLIST title id CDATA #IMPLIED&gt;</li><li> m=m.replace(/ ([^#]+)/g, ' <span style="color:blue;">$1</span>');</li><li> m=m.replace(/([#][^&]+)/g,'<span style="color:fuchsia">$1</span>');</li><li> m=m.replace(/(!ATTLIST)/gi,'<span style="color:red;">$1</span>');</li><li> return m;</li><li> } );</li><li> // ATTLIST 1</li><li> sStr=sStr.replace(//&lt/;/!ATTLIST[^><]+(/&gt/;|)/gi, function(m){</li><li> m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');</li><li> m=m.replace(//!(ATTLIST)/i,'!<span style="color:red;">$1</span>');</li><li> m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');</li><li> return m;</li><li> } );</li><li> // DOCTYPE</li><li> sStr=sStr.replace(//&lt/;/!DOCTYPE[^><]+(/&gt/;|)/[/gi, function(m){</li><li> m=m.replace(/ (/S+) /gi,' <span style="font-weight:bold">$1</span> ');</li><li> m=m.replace(//!(DOCTYPE)/gi, '!<span style="color:red">$1</span>');</li><li> return m;</li><li> } );</li><li> // IGNORE</li><li> sStr=sStr.replace(//&lt/;/!/[ (IGNORE|INCLUDE)[^><]+(/]/]/&gt/;|/&gt/;|)/gi, function(m){</li><li> m=m.replace(/(/&lt/;!/[) (IGNORE|INCLUDE)/,'$1 <span style="font-weight:bold">$2</span>');</li><li> m=m.replace(/([^!])/[([/S ]+)/]/,'$1[<span style="color:fuchsia">$2</span>]')</li><li> return m;</li><li> } );</li><li> // DOCTYPE 1</li><li> sStr=sStr.replace(//&lt/;/!DOCTYPE[^><]+(/&gt/;|)/gi, function(m){</li><li> m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');</li><li> m=m.replace(//!(DOCTYPE)/i,'!<span style="color:red;">$1</span>');</li><li> m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');</li><li> return m;</li><li> } );</li><li> // NOTATION</li><li> sStr=sStr.replace(//&lt/;/!NOTATION[^><]+(/&gt/;|)/gi, function(m){</li><li> m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');</li><li> m=m.replace(//!(NOTATION)/i,'!<span style="color:red;">$1</span>');</li><li> m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');</li><li> return m;</li><li> } );</li><li> // ENTYT(Y|IES)</li><li> sStr=sStr.replace(//&lt/;/!ENTIT(Y|IES)[^><]+(/&gt/;|)/gi, function(m){</li><li> m=m.replace(/ ([^'!<>"" ]+)/gi,' <span style="color:blue">$1</span>');</li><li> m=m.replace(//!(ENTIT(Y|IES))/i,'!<span style="color:red;">$1</span>');</li><li> m=m.replace(/([^=])(/'|/")([^/<> ]+)/2/g,'$1$2<span style="color:fuchsia;">$3</span>$2');</li><li> return m;</li><li> } );</li><li> // </markup/></li><li> sStr=sStr.replace(//&lt/;(//|)[a-z0-9_/-:]+(/&gt/;| ///&gt/;|///&gt/;)/gi, function(m){</li><li> m=m.replace(/(/&lt/;(//|))([a-z0-9_/-:]+)/gi,'$1<span style="color:red;">$3</span>');</li><li> return m;</li><li> } );</li><li> // <markup pram='value'/></li><li> sStr=sStr.replace(/&lt;[^<>]+/=[^><]+(///&gt/;|/&gt/;|)/gi, function(m){</li><li> m=m.replace(/([a-z:]+)( |)/=/gi,'<span style="color:blue;">$1</span>$2###=###');</li><li> m=m.replace(/[#]{3}/=[#]{3}(/'|")([^<>'"]+)/g,</li><li> '=$1<span style="color:fuchsia;">$2</span>');</li><li> m=m.replace(//#{3}/=/#{3}/g,'=');</li><li> m=m.replace(/(/&lt/;)([^<>]+)/,'$1<span style="color:red;">$2</span>');</li><li> return m;</li><li> } );</li><li> }</li><li> //------------------------------end xml</li><li> return sStr;</li><li> }</li><li> }</li><li> //-------------------------end function fHighlight(sStr, sOpt)-------------------------//</li><li> οnlοad=function(){</li><li> document.body.innerHTML=fHighlight(document.body.innerHTML, 'javascript xml');</li><li> }</li><li>//]]></li><li></script></li><li> </li></ol></pre> </div>
- </body>
- </html>