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

判断IP格式方法:

  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. }

正则表达式分析:

  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的匹配。

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

  1. ^(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})(1\d{2})|(2[0-4]\d)|(25[0-5]))$

任意数字重复1-2次,及0~99 ,其他均是对第一个表达式进行了缩写。C#中务必加上首尾的^和$,否则上述方法匹配-1.1.1.1这样的IP也会返回True。

其他常用正则表达式:

URL:

  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:

  1. (\w+\.) * \w+@(\w+\.)+[A-Za-z]+

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

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

贪婪模式和懒惰模式

(abc)de(fg)

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

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

C# 正则表达式判断IP,URL等及其解释的更多相关文章

  1. 正则表达式 判断IP 数字

    1.正则表达式 public static bool checkIP(string strIP) { //string regex = @"^(2[0-4]\d | 25[0-5] | [0 ...

  2. 正则表达式 判断 ip:端口 形式

    <html> <head> </head> <body> ip:port<input type="" name="z ...

  3. 正则表达式判断ip地址

    html: <div class="configuration"><form action="" name="myformcon&q ...

  4. QT正则表达式---针对IP地址

    判断合法IP的QT正则表达式: bool IsIPaddress(QString ip) { QRegExp rx2("(//d+)(//.)(//d+)(//.)(//d+)(//.)(/ ...

  5. Java正则表达式验证IP,邮箱,电话

     引言     java中我们会常用一些判断如IP.电子邮箱.电话号码的是不是合法,那么我们怎么来判断呢,答案就是利用正则表达式来判断了,废话不多说,下面就是上代码. 1:判断是否是正确的IP  1 ...

  6. C# 正则表达式判断是否是有效的文件、文件夹路径

    C# 正则表达式判断是否是有效的文件.文件夹路径 省流 /// <summary> /// 是否有效的文件,文件夹路径 /// </summary> /// <param ...

  7. ip校验方法:判断ip是否位于指定的范围内

    import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.reg ...

  8. iOS - 正则表达式判断邮箱、身份证..是否正确:

    iOS - 正则表达式判断邮箱.身份证..是否正确: //邮箱 + (BOOL) validateEmail:(NSString *)email {     NSString *emailRegex ...

  9. js判断IP js判断域名

    <html> <head> <script language="javascript" type="text/javascript" ...

随机推荐

  1. python安装Django

    现在有很多建站系统,很多都是基于php的,比如WordPress. 而Django 是老牌基于Python的CMS框架了,一直听说很强大,甚至曾经很红的Ruby On Rails都参考了它的很多概念, ...

  2. BZOJ 4592 SHOI2015 脑洞治疗仪 线段树

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4592 题意概述:需要维护一个01序列A,一开始A全部都是1.支持如下操作: 1.将区间[l ...

  3. python学习笔记-list的用法

    1.list的定义 list = [] list = [1,2,'a','b'](list中的元素不一定是一个类型) 2.list的操作 1)list.append(value) 2)list.ins ...

  4. Codeforces Round #268 (Div. 1) 468D Tree(杜教题+树的重心+线段树+set)

    题目大意 给出一棵树,边上有权值,要求给出一个1到n的排列p,使得sigma d(i, pi)最大,且p的字典序尽量小. d(u, v)为树上两点u和v的距离 题解:一开始没看出来p需要每个数都不同, ...

  5. Codeforces 821E Okabe and El Psy Kongroo(矩阵快速幂)

    E. Okabe and El Psy Kongroo time limit per test 2 seconds memory limit per test 256 megabytes input ...

  6. 【题解】AHOI2009同类分布

    好开心呀~果然只有不看题解做出来的题目才会真正的有一种骄傲与满足吧ヾ(๑╹◡╹)ノ" 实际上这题只要顺藤摸瓜就可以了.首先按照数位dp的套路,有两维想必是省不掉:1.当前dp到到的位数:2. ...

  7. [poj] 2396 [zoj] 1994 budget || 有源汇的上下界可行流

    poj原题 zoj原题 //注意zoj最后一行不要多输出空行 现在要针对多赛区竞赛制定一个预算,该预算是一个行代表不同种类支出.列代表不同赛区支出的矩阵.组委会曾经开会讨论过各类支出的总和,以及各赛区 ...

  8. C&C++——extern

    1.C 调用C++的函数或变量 C 调用C++的函数或变量,在C++的头文件声明为extern "C" ,C调用的时候只使用extern 声明. 可见,extern "C ...

  9. 非阻塞式JavaScript脚本及延伸知识

    JavaScript 倾向于阻塞浏览器某些处理过程,如HTTP 请求和界面刷新,这是开发者面临的最显著的性能问题.保持JavaScript文件短小,并限制HTTP请求的数量,只是创建反应迅速的网页应用 ...

  10. http get post 参数校验

    spring boot 常见http get ,post请求参数处理   在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台 ...