为了账号安全,请及时绑定邮箱和手机立即绑定

这段正则应该怎么分析啊?

这段正则应该怎么分析啊?

炎炎设计 2019-04-19 16:29:35
(/^\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.常规URL
http://localhost:8080/app/resources/css/style.css
2.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地址部分就有很多漏洞,端口也是。
                            
查看完整回答
反对 回复 2019-04-19
  • 2 回答
  • 0 关注
  • 331 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信