(/^\s*(?:(?:(?:ht|f)tps?:\/\/)?(?:(?:\w+?)(?:\.(?:[\w-]+?))*(?:\.(?:[a-zA-Z]{2,5}))|(?:(?:\d+)(?:\.\d+){3}))(?::\d{2,5})?(?:\/\S*|$)|data:(text|image)\/[\u0025-\u007a]+)\s*$/.test(TXT)什么意思,然后碰到这种正则应该怎么分析?
2 回答
墨色风雨
TA贡献1853条经验 获得超6个赞
就是长点,其实没那么难,这个是用来匹配这两种东西的1.常规URLhttp://localhost:8080/app/resources/css/style.css2.DataURL:data:image/gif;base64,R0lGODlhBAABAIABAMLBwfLx8SH5BAEAAAEALAAAAAAEAAEAAAICRF4AOw==是用来匹配css文件里面的资源路径或者一个img的src的。怎么分析?各个击破,你首先要克服畏难心理,摸清正则表达式的结构将其分解为几个小的表达式,然后再一个一个分析。分析第一步:去掉?:,它的意思是不捕获,就是提高性能而已,对是否匹配的逻辑一点不影响:^\s*(((ht|f)tps?:\/\/)?((\w+?)(\.([\w-]+?))*(\.([a-zA-Z]{2,5}))|((\d+)(\.\d+){3}))(:\d{2,5})?(\/\S*|$)|data:(text|image)\/[\u0025-\u007a]+)\s*$然后:^\s*(((ht|f)tps?:\/\/)?--http(s)这个是一条重要的线索((\w+?)(\.([\w-]+?))*(\.([a-zA-Z]{2,5}))域名|或((\d+)(\.\d+){3})IP)(:\d{2,5})?端口(\/\S*|$)资源|或data:(text|image)\/[\u0025-\u007a]+DataURL)\s*$由此分析,我们可以看出这个正则表达式并不严谨,域名和IP地址部分就有很多漏洞,端口也是。
添加回答
举报
0/150
提交
取消