php代码高亮正则,PHP_js 玩转正则表达式之语法高亮,学了几天正则,差不多该总结 - phpStudy...

test

/* 高亮样式 */

*{font-size:12px;}

code{word-break:break-all;}

.com {color:#008000;} /* 注释 */

.comkey {color:#FFA500;} /* 注释标记 */

.str {color:#808080;} /* 字符串 */

.val {color:#000080;} /* true|false|null|undefined|NaN */

.kwd {color:#000080;font:bold 12px 'comic sans ms', sans-serif;} /* 关键词 */

.obj {color:#000080;} /* 内置对象 */

.num {color:#FF0000;} /* 数字 */

.reg {color:#8000FF;} /* 正则 */

.func {color:#A355B9;} /* 函数 */

// 单行注释

/**

* 多行注释

* @date 2014-05-12 22:24:37

* @name 测试一下

*/

var str1 = "123\"456";

var str2 = '123\'456';

var str3 = "123\

456";

var num = 123;

var arr = [12, 12.34, .12, 1e3, 1e+3, 1e-3, 12.34e3, 12.34e+3, 12.34e-3, .1234e3];

var arr = ["12", "12.34", '.12, 1e3', '1e+3, 1e-3', '12.34e3, 12.34e+3, 12.34e-3', ".1234e3"];

var arr = [/12", "12.34/, /"12\/34"/];

for (var i=0; i<1e3; i++) {

var node = document.getElementById("a"+i);

arr.push(node);

}

function test () {

return true;

}

test();

(function(window, undefined) {

var _re_js = new RegExp('(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)|("(?:[^"\\\\]|\\\\[\\s\\S])*"|\'(?:[^\'\\\\]|\\\\[\\s\\S])*\')|\\b(true|false|null|undefined|NaN)\\b|\\b(var|for|if|else|return|this|while|new|function|switch|case|typeof|do|in|throw|try|catch|finally|with|instance|delete|void|break|continue)\\b|\\b(document|Date|Math|window|Object|location|navigator|Array|String|Number|Boolean|Function|RegExp)\\b|(?:[^\\W\\d]|\\$)[\\$\\w]*|(0[xX][0-9a-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?|\\.\\d+(?:[eE][+-]?\\d+)?)|(?:^|[^\\)\\]\\}])(\\/(?!\\*)(?:\\\\.|[^\\\\\\/\\n])+?\\/[gim]*)|[\\s\\S]', 'g');

function prettify(node) {

var code = node.innerHTML.replace(/\r\n|[\r\n]/g, "\n").replace(/^\s+|\s+$/g, "");

code = code.replace(_re_js, function() {

var s, a = arguments;

for (var i = 1; i <= 7; i++) {

if (s = a[i]) {

s = htmlEncode(s);

switch (i) {

case 1: //注释 com

return '' + s + '';

case 2: //字符串 str

return '' + s + '';

case 3: //true|false|null|undefined|NaN val

return '' + s + '';

case 4: //关键词 kwd

return '' + s + '';

case 5: //内置对象 obj

return '' + s + '';

case 6: //数字 num

return '' + s + '';

case 7: //正则 reg

return htmlEncode(a[0]).replace(s, '' + s + '');

}

}

}

return htmlEncode(a[0]);

});

code = code.replace(/(?:\s*\*\s*|(?: )*\*(?: )*)(@\w+)\b/g, ' * $1') // 匹配注释中的标记

.replace(/(\w+)(\s*\(|(?: )*\()|(\w+)(\s*=\s*function|(?: )*=(?: )*function)/g, '$1$2') // 匹配函数

return code;

}

function htmlEncode(str) {

var i, s = {

//"&": /&/g,

""": /"/g,

"'": /'/g,

"

">": />/g,

"
": /\n/g,

" ": / /g,

"  ": /\t/g

};

for (i in s) {

str = str.replace(s[i], i);

}

return str;

}

window.prettify = prettify;

})(window);

(function(window, undefined) {

var _re_js = new RegExp('(\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/)|("(?:[^"\\\\]|\\\\[\\s\\S])*"|\'(?:[^\'\\\\]|\\\\[\\s\\S])*\')|\\b(true|false|null|undefined|NaN)\\b|\\b(var|for|if|else|return|this|while|new|function|switch|case|typeof|do|in|throw|try|catch|finally|with|instance|delete|void|break|continue)\\b|\\b(document|Date|Math|window|Object|location|navigator|Array|String|Number|Boolean|Function|RegExp)\\b|(?:[^\\W\\d]|\\$)[\\$\\w]*|(0[xX][0-9a-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?|\\.\\d+(?:[eE][+-]?\\d+)?)|(?:^|[^\\)\\]\\}])(\\/(?!\\*)(?:\\\\.|[^\\\\\\/\\n])+?\\/[gim]*)|[\\s\\S]', 'g');

function prettify(node) {

var code = node.innerHTML.replace(/\r\n|[\r\n]/g, "\n").replace(/^\s+|\s+$/g, "");

code = code.replace(_re_js, function() {

var s, a = arguments;

for (var i = 1; i <= 7; i++) {

if (s = a[i]) {

s = htmlEncode(s);

switch (i) {

case 1: //注释 com

return '' + s + '';

case 2: //字符串 str

return '' + s + '';

case 3: //true|false|null|undefined|NaN val

return '' + s + '';

case 4: //关键词 kwd

return '' + s + '';

case 5: //内置对象 obj

return '' + s + '';

case 6: //数字 num

return '' + s + '';

case 7: //正则 reg

return htmlEncode(a[0]).replace(s, '' + s + '');

}

}

}

return htmlEncode(a[0]);

});

code = code.replace(/(?:\s*\*\s*|(?: )*\*(?: )*)(@\w+)\b/g, ' * $1') // 匹配注释中的标记

.replace(/(\w+)(\s*\(|(?: )*\()|(\w+)(\s*=\s*function|(?: )*=(?: )*function)/g, '$1$2') // 匹配函数

return code;

}

function htmlEncode(str) {

var i, s = {

//"&": /&/g,

""": /"/g,

"'": /'/g,

"

">": />/g,

"
": /\n/g,

" ": / /g,

"  ": /\t/g

};

for (i in s) {

str = str.replace(s[i], i);

}

return str;

}

window.prettify = prettify;

})(window);

var code = document.getElementById("regdemon");

code.innerHTML = prettify(code);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值