佚名通过本文主要向大家介绍了正则模态分析,正则相关分析,正则化判别分析,正则分析,正则表达式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:这段正则应该怎么分析啊?
描述:
解决方案1:
描述:
(/^\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)
什么意思,然后碰到这种正则应该怎么分析?
解决方案1:
http://regexper.com/
希望能帮上你
这正则是在太恶心了 我能一眼看懂的只有http/ftp/https的匹配 其余的估计是跟具体逻辑有关
就是长点,其实没那么难,这个是用来匹配这两种东西的
1.常规URL
http://localhost:8080/app/resources/css/style.css
2.Data URL:
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]+ Data URL
)\s*$
由此分析,我们可以看出这个正则表达式并不严谨,域名和IP地址部分就有很多漏洞,端口也是。