JS 检测代码格式化

JS 检测代码格式化JS检测代码格式化console.log("start");functiont(){returnt.toString().search('(((.+)+)+)+$').toString();}a=t();console.log("end

大家好,欢迎来到IT知识分享网。JS

JS 检测代码格式化

console.log("start");
function t(){
    return t.toString().search('(((.+)+)+)+$').toString();
}
a=t();
console.log("end");

运行这段代码,会发现,程序执行不到log(“end”),

但如果去掉t函数中的回车换行:

console.log("start");
function t(){    return t.toString().search('(((.+)+)+)+$').toString();}
a=t();
console.log("end");

那么,重点中的重点找到了,就是 serach 语句。

serach 与 indexof 相似,不同的是 search 是强制正则表达式的,而 indexOf 只是按字符串匹配的。serach将(((.+)+)+)+$视为正则表达式进行匹配。

到此,大体明白了它的原理了,其实也就是递归,让程序执行不下去

再来看正则表达式:(((.+)+)+)+$

“.”:匹配除 “\n” 之外的任何单个字符。

“+”:匹配前面的子表达式一次或多次。

(pattern): 匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。

“$”: 与字符串结束的地方匹配,不匹配任何字符

测试正则表达式:

var str= `function t(){ console.log( t.toString().search('(((.+)+)+)+$').toString() );}`;
console.log( /(((.+)+)+)+$/.test(str) )

console.log("start");

正常

var str= `function t(){
     console.log( t.toString().search('(((.+)+)+)+$').toString() );
    }`;
console.log( /(((.+)+)+)+$/.test(str) )

console.log("start");

执行会被卡死

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/30419.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信