zoukankan      html  css  js  c++  java
  • 万能Url正则表达式[http,ftp,news,telnet.....]——史上最全Url正则表达式(基于RFC1738‏)

    最近换了份工作,很少来园子里转了。

    现在做的是SDET,测试协议,感觉还是没有应用开发有意思哦~~~~~~

    由于工作需要写了一个包括所有Url的正则表达式,用来验证返回的Url是否符合RFC1738规定。

    有兴趣的同学可以去看RFC1378关于Url部分的介绍(http://www.ietf.org/rfc/rfc1738.txt),本文中的代码是按其规定编写的。

    在没有了解RFC1738的时候,一直以为Url的正则表达式很简单,没想到Url有这么多分类,更没想到一个普通的http的正则表达式也不是那么简单。

    以下是我搜到的关于http的正则表达式:

    http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

    当然这已经满足大部分人的需求了,但是如果需要严格的验证的话还是要符合RFC1738了。

    Url包括Http,Ftp,News,Nntpurl,Telnet,Gopher,Wais,Mailto,File,Prosperurl和Otherurl。

    呵呵,废话不多说了,上代码

    Code

    有了Pattern剩下的就简单多了,无非就是正则表达式的验证了,以Http为例:

    Http的pattern为string httpurl,假设要验证的Url为url,所以验证url的代码如下:

    Regex regex = new Regex(httpurl);

    bool isMatchHttp = regex.IsMatch(url);

    呵呵,感谢大家观赏,今天就写到这里吧~~~~~~

    FYI.

    敬告

    作者:pangxiaoliang
    出处:http://www.cnblogs.com/pangxiaoliang
    本文版权归pangxiaoliang和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。
  • 相关阅读:
    day37 多路复用IO模型之select select,poll,epoll 异步IO 数据库基本概念 配置文件管理
    day36 协程介绍/yield实现协程/补充/gevent模块/网络IO模型介绍/阻塞IO模型/非阻塞IO模型
    day35 GIL介绍 cpython解释器的垃圾回收机制 GIL与自定义互斥锁 多进程vs多线程 线程queue 进程池与线程池
    day34 线程介绍/开启线程的两种方式/进程vs线程/线程对象其他相关属性或方法/互斥锁/死锁现象与递归锁/信号量
    day33 守护进程、互斥锁、进程间通信、生产者消费者模型part1、生产者消费者模型part2、生产者消费者模型part3
    day 32 进程理论/开启子进程的两种方式/僵尸进程与孤儿进程/进程间内存空间隔离/join操作/进程对象其他相关属性或方法
    day31 基于udp协议套接字通信 udp协议通信循环原理分析 udp协议没有粘包问题/基于socketserver模块实现并发的套接字(tcp) 基于socketserver模块实现并发的套接字(udp) 进程的简单介绍 操作系统的功能介绍 操作系统的发展史
    day30 模拟ssh远程执行命令/解决粘包执行问题/粘包终极解决方案/tcp的优化算法以及粘包问题分析
    Unity3D游戏开发之MatchTarget实现角色攀爬效果
    javase学习第九天(抽象类与接口)
  • 原文地址:https://www.cnblogs.com/pangxiaoliang/p/1593905.html
Copyright © 2011-2022 走看看