• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 这段正则应该怎么分析啊?

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

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了正则模态分析,正则相关分析,正则化判别分析,正则分析,正则表达式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:这段正则应该怎么分析啊?
描述:

(/^\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的匹配 其余的估计是跟具体逻辑有关

解决方案2:

就是长点,其实没那么难,这个是用来匹配这两种东西的
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地址部分就有很多漏洞,端口也是。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-06-07 DB2分区数据库备份(python)定时数据库备份
  • 2017-06-07 调用百度地图api,chrome显示连接不安全,请求被禁止,需要https,怎样解决
  • 2017-06-07 七牛镜像存储
  • 2017-06-07 (python)scrapy运行单个spider的时候,是不是只能利用单核资源?
  • 2017-06-07 python快速遍历文件夹下面三十几万txt文档
  • 2017-06-07 (python)为什么selenium+PhantomJS得到的网页数据跟chrome调试中看的源码不一样?
  • 2017-06-07 求解法-元芳在哪里?
  • 2017-06-07 python实现一定时间间隔执行一次程序
  • 2017-06-07 阿里云SLB总不是特别稳定,准备上OCS来做SESSION,大家有试过的么?
  • 2017-06-07 以茶汤颜色作为分类标志的基本茶类是哪几类python的几个类的问题求助啊

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • python中用fetchall获得的tuple转到form表单中逐条显示
    • mac下如何停止python服务?
    • 七牛云存储能否统计每个文件的下载次数?HOW?
    • 开启镜像功能,服务器图片更新了,七牛那边不会立马更新!会同步吗,需要多久同步?
    • 问天问地问自己pythonimport相关问题
    • VFP9,如何写入网站的数据库
    • mac终端man命令显示中文文档
    • python实现自动登录需要用户名和密码的网站
    • 汇编语言中的冒号什么意思?
    • 七牛云存储,简单测试上传,参数该如何填写?语言C#

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有