javascript语法着色和检查代码,非常的简单不到60行

Html代码 复制代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">     
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">     
  3. <head>     
  4.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />     
  5.     <title>SyntaxHighlighter Build Test Page</title>     
  6. </head>     
  7.     <body>     
  8.     <h3>SyntaxHihglighter Test</h3>     
  9.     <pre id="showCode">  
  10.     var hi = "hi!";   
  11.     function test()      
  12.     {      
  13.         var a = 5;      
  14.         if(a<10)      
  15.         {      
  16.             return 10;      
  17.         }      
  18.         else      
  19.         {      
  20.             return avar b = a;     
  21.         }   
  22.         dvar b = a;   
  23.     }      
  24.     </pre>     
  25.      
  26.     <script type="text/javascript">     
  27.      
  28.     function hightLight(str)   
  29. {   
  30.     var start_var = false;   
  31.     if(str.substring(0,3) == "var")   
  32.     {   
  33.         start_var = true;   
  34.     }    
  35.     var keywords_green = "= { }".split(" ");   
  36.     var keywords_blue = "function new return var typeof instanceof".split(" ");   
  37.     var keywords_red = "break case catch continue default delete else finally for if switch this throw try void while with ;".split(" ");   
  38.     //user lite keyword no hightLight with: do in   
  39.     strstr = str.replace(/};/g,"};\n");//对只有一行的压缩代码,每个方法换一行,方便查阅   
  40.        
  41.     for(var i = 0; i < keywords_green.length; i++)   
  42.     {   
  43.         var oReg = new RegExp(keywords_green[i], "g");   
  44.         var rp = "<span style='color:green'>" + keywords_green[i] + "</span>";   
  45.         strstr = str.replace(oReg,rp);   
  46.     }   
  47.        
  48.     //给异常的关键字var加上背景颜色,顺序不能变   
  49.     var rp3 = "<span style='background-color:yellow'>$1var</span>";   
  50.     strstr = str.replace(/([^;|{|\t| ])var/g,rp3);   
  51.     if(start_var)   
  52.     {   
  53.         alert(str);   
  54.         //去掉第一个以var开头的背景颜色   
  55.         strstr = str.replace(/<span style='background-color:yellow'>var<\/span>/,"var");   
  56.     }   
  57.     for(var i = 0; i < keywords_blue.length; i++)   
  58.     {   
  59.         var oReg = new RegExp(keywords_blue[i], "g");   
  60.         var rp = "<span style='color:blue'>" + keywords_blue[i] + "</span>";   
  61.         strstr = str.replace(oReg,rp);   
  62.     }   
  63.     for(var i = 0; i < keywords_red.length; i++)   
  64.     {   
  65.         var oReg = new RegExp(keywords_red[i], "g");   
  66.         var rp = "<span style='color:red'>" + keywords_red[i] + "</span>";   
  67.         var rp2 = "$1<span style='color:red'>" + keywords_red[i] + "</span>(";   
  68.            
  69.         //if for are use more and other code not in keyword are use it   
  70.         if(keywords_red[i] == "if")   
  71.         {   
  72.             strstr = str.replace(/if(\s?)\(/g,rp2);   
  73.         }   
  74.         else if(keywords_red[i] == "for")   
  75.         {   
  76.             strstr = str.replace(/for(\s?)\(/g,rp2);   
  77.         }   
  78.         else   
  79.         {   
  80.             strstr = str.replace(oReg,rp);   
  81.         }   
  82.     }   
  83.        
  84.     strstr = str.replace(/\n/g,"<br />");   
  85.     strstr = str.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");//for ie can't with four space   
  86.     return str;   
  87.  }   
  88.  function init()   
  89.  {   
  90.     var obj = document.getElementById("showCode");   
  91.     var str = obj.innerText || obj.textContent;//innerHTML会吧<>转义成&lt;&gt;导致无法加亮分号   
  92.     obj.innerHTML = hightLight(str);   
  93.  }   
  94.  init();   
  95.     </script>     
  96. </body>     
  97. </html>    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
    <title>SyntaxHighlighter Build Test Page</title>  
</head>  
    <body>  
    <h3>SyntaxHihglighter Test</h3>  
    <pre id="showCode">
	var hi = "hi!";
	function test()   
	{   
		var a = 5;   
		if(a<10)   
		{   
			return 10;   
		}   
		else   
		{   
			return avar b = a;  
		}
		dvar b = a;
	}   
    </pre>  
  
    <script type="text/javascript">  
  
    function hightLight(str)
{
	var start_var = false;
	if(str.substring(0,3) == "var")
	{
		start_var = true;
	} 
	var keywords_green = "= { }".split(" ");
	var keywords_blue = "function new return var typeof instanceof".split(" ");
	var keywords_red = "break case catch continue default delete else finally for if switch this throw try void while with ;".split(" ");
	//user lite keyword no hightLight with: do in
	str = str.replace(/};/g,"};\n");//对只有一行的压缩代码,每个方法换一行,方便查阅
	
	for(var i = 0; i < keywords_green.length; i++)
	{
		var oReg = new RegExp(keywords_green[i], "g");
		var rp = "<span style='color:green'>" + keywords_green[i] + "</span>";
		str = str.replace(oReg,rp);
	}
	
	//给异常的关键字var加上背景颜色,顺序不能变
	var rp3 = "<span style='background-color:yellow'>$1var</span>";
	str = str.replace(/([^;|{|\t| ])var/g,rp3);
	if(start_var)
	{
		alert(str);
		//去掉第一个以var开头的背景颜色
		str = str.replace(/<span style='background-color:yellow'>var<\/span>/,"var");
	}
	for(var i = 0; i < keywords_blue.length; i++)
	{
		var oReg = new RegExp(keywords_blue[i], "g");
		var rp = "<span style='color:blue'>" + keywords_blue[i] + "</span>";
		str = str.replace(oReg,rp);
	}
	for(var i = 0; i < keywords_red.length; i++)
	{
		var oReg = new RegExp(keywords_red[i], "g");
		var rp = "<span style='color:red'>" + keywords_red[i] + "</span>";
		var rp2 = "$1<span style='color:red'>" + keywords_red[i] + "</span>(";
		
		//if for are use more and other code not in keyword are use it
		if(keywords_red[i] == "if")
		{
			str = str.replace(/if(\s?)\(/g,rp2);
		}
		else if(keywords_red[i] == "for")
		{
			str = str.replace(/for(\s?)\(/g,rp2);
		}
		else
		{
			str = str.replace(oReg,rp);
		}
	}
	
	str = str.replace(/\n/g,"<br />");
	str = str.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");//for ie can't with four space
	return str;
 }
 function init()
 {
 	var obj = document.getElementById("showCode");
	var str = obj.innerText || obj.textContent;//innerHTML会吧<>转义成&lt;&gt;导致无法加亮分号
	obj.innerHTML = hightLight(str);
 }
 init();
    </script>  
</body>  
</html>  

 

运行结果:

SyntaxHihglighter Test

    var hi = "hi!"; 
    function test() 
    { 
        var a = 5; 
        if(a<10) 
        { 
            return 10; 
        } 
        else 
        { 
            return avar b = a; 
        } 
        dvar b = a; 
    }  

发现javaEye的语法着色功能有bug,我原来的str = str.replace(/};/g,"};\n");变成strstr = str.replace(/};/g,"};\n"); 了!给多了个str,重新编辑html代码也给弄乱了,把源代码上传给大家了。

 

语法着色我自己测试过了,这个其实很简单,就是把关键字替换一下而已,那些关键字替换成什么颜色完全可以自定义,语法着色不是我的目的,我的目的是作为压缩脚本后的语法检查。
因为不规范的写法在脚本压缩成一行和去掉多余空格后经常会报错,例如赋值符后的变量没有以;号结束,else后面没有{}包含起来等,在压缩后的脚本通过语法着色可以比较容易知道在那个地方出错了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,业涵盖各高科技业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值