• C# 正则表达式判断IP,URL等及其解释


    C# 正则表达式判断IP,URL等及其解释

    判断IP格式方法:

    [csharp] view plain copy
     
    1. public static bool ValidateIPAddress(string ipAddress)  
    2. {  
    3. Regex validipregex=new Regex(@"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$");  
    4. return (ipAddress!=""&&validipregex.IsMatch(ipAddress.Trim()))?true:false;  
    5. }  

    正则表达式分析:

    [plain] view plain copy
     
    1. ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$  


    IP中每个十进制数,“|”号划分了5种情况:①0~9   ②10~99   ③100~199   ④200~249   ⑤250~255

    {n}表示恰好匹配了n次。  .){3}表示每个十进制数加'.'重复三次。最后加上最后一个十进制数即完成对IP的匹配。

    当然这是较简单的写法,也可以简写成:

    [plain] view plain copy
     
    1. ^(((d{1,2})|(1d{2})|(2[0-4]d)|(25[0-5])).){3}((d{1,2})(1d{2})|(2[0-4]d)|(25[0-5]))$  
    任意数字重复1-2次,及0~99 ,其他均是对第一个表达式进行了缩写。C#中务必加上首尾的^和$,否则上述方法匹配-1.1.1.1这样的IP也会返回True。

    其他常用正则表达式:

    URL:

    [plain] view plain copy
     
    1. ((http|ftp|https)://)(([a-zA-Z0-9._-]+.[a-zA-Z]{2,6})|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9&%_./-~-]*)?  

    关于该正则表达式的说明:

    ①:该正则表达式匹配的字符串必须以http://、https://、ftp://开头;

    ②:该正则表达式能匹配URL或者IP地址;(如:http://www.baidu.com 或者 http://192.168.1.1)

    ③:该正则表达式能匹配到URL的末尾,即能匹配到子URL;(如能匹配:http://www.baidu.com/s?wd=a&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=baiduhome_pg&inputT=1236)

    ④:该正则表达式能够匹配端口号;(URL部分转载自点击打开链接)

    E-mail:

    [plain] view plain copy
     
    1. (w+.) * w+@(w+.)+[A-Za-z]+  

    w匹配任何字母或数字  W匹配除字母和数字外任何字符   S匹配任何非空字符(除空格,换行,制表符等) 

    *表示匹配0或多次   +表示1或多次    .匹配任何除了 以外的字符    ?匹配0次或1次

    贪婪模式和懒惰模式

    (abc)de(fg)

    对于上面的字符串如果使用(.*)匹配,会得到(abc)满足,(abc)de(fg)同样满足,因为正则默认的是贪婪模式,会在得到第一个匹配项后进行回溯,尽量多的匹配满足条件的项,为了解决这个问题,可以使用(.*?)表达式,在+或*后面加上?,就会在懒惰模式下进行匹配,得到第一个匹配项后不进行回溯,得到尽可能少的匹配项。

    原文连接:http://blog.csdn.net/sinat_21731599/article/details/46045631

  • 相关阅读:
    ubuntu VirtualBox 网络配置
    Linux Lsof命令详解
    自然用户界面
    [Java]读取文件方法大全
    java设计模式_命令模式 两个不同风格的实现
    创建线程的方法 Thread Runnable
    程序员每天到底可以写几行代码?
    eclipse Javadoc 汉化成中文
    linux jna调用so动态库
    使用GNU Make来管理Java项目,IDE神马都是浮云
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/8036967.html
Copyright © 2020-2023  润新知