`
bk562bk
  • 浏览: 26686 次
社区版块
存档分类
最新评论

匹配 IP 地址和域名的正则表达式

 
阅读更多
一个IP字串,由四段组成,每一段是0~255的数字,段与段之间用小数点隔开,比如61.139.2.69就是一个合法的IP字串。

如果正则表达式写成\d{1,3}(\.\d{1,3}){3}无疑是不负责的,因为它可以匹配300.400.555.666这样的非法IP字串。

要匹配一个0~255之间的数,有几种匹配方式,下面是其中一种:

匹配

正则表达式 说明

0~9 \d 单个数字

10~99 [1-9]\d 两位数

100~199 1\d\d 百位为1的三位数

200~249 2[0-4]\d 三位数,百位是2,十位是0~9

250~255 25[0-5]

三位数,百位是2,十位是5,个位是0~5

写成正则表达式,即:

(\d|([1-9]\d)|(1\d\d)|(2[0-4]\d)|(25[0-5]))

但是这样的正则表达式在匹配254这样的字串时,会分别匹配2、5、4,得到3个匹配,达不到预期效果,正确做法是将次序颠倒为:

((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d)

因为在(xxx|yyy)这种匹配行为中,是从左向右搜索的。

完整的正则表达式是:

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

按:

像061这样的高位为0的数是不能被匹配的。

太麻烦,不如自己写一小段代码解析来得容易,例如:

\d+\.\d+\.\d+\.\d+

然后检查格式即可。

--------------------------------------------------------------------------------

一个完整的域名,由根域、顶级域、二级、三级……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过63。

很显然,单独的名字可以由正则表达式

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}

来匹配,而完整的域名至少包括两个名字(比如google.com,由google和com构成),最后可以有一个表示根域的点(在规范中,最后有一个点的才是完整域名,但一般认为包括两个以上名字的域名也是完整域名,哪怕它后面没有点)。

匹配完整域名的正则表达式:

[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
分享到:
评论

相关推荐

    android验证ip地址的正则表达式

    android验证ip地址的正则表达式 android验证ip地址的正则表达式

    正则表达式(IP和域名)

    正则表达式(IP和域名),能够匹配IP字串的正则表达式,实际尝试发现远没有自己写几行代码来判断来得容易

    匹配 IP 地址与域名的正则表达式

    单独的名字可以由正则表达式[a-zA-Z0-9][-a-zA-Z0-9]{0,62}来匹配,而完整的域名至少包括两个名字(比如google.com,由google和com构成),最后可以有一个表示根域的点(在规范中,最后有一个点的才是完整域名,但...

    18.C#字符串和正则表达式参考手册 影印版

    C#字符串和正则表达式参考手册 目 录 第1章 系统处理文本的方式 1 1.1 .NET Framework 1 1.1.1 公共语言运行时 2 1.1.2 .NET Framework类库 3 1.2 文本是一种数据类型 4 1.2.1 C#的数据类型 5 1.2.2 字符和字符集 6 ...

    VBscript 的正则表达式 字符串匹配

    由于我对正则不是很清楚,我想求取把字符串 “str, DGK, rDJK, DJKl,DGK , end” 替换为 “str, MSN, rDJK, DJKl,MSN... 您可能感兴趣的文章:IP地址正则表达式匹配方法匹配 IP 地址与域名的正则表达式Shell

    JavaScript之RegExp_动力节点Java学院整理

    比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。 正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一...

    Nginx常用技巧使用实例汇总

    ④server_name使用正则表达式并能匹配上www.pm.com的区块。 ⑤如果都没有匹配到,将选择 listen 80 default_server;的区块。 ⑥如果没有第5项,则选择第一个配置文件的第一个server区块。 访问域名www.pm.com就是...

    updns:DNS代理工具

    p 53:53/udp -v /root/updns/:/root/.updns/ --restart always updns设定档您可以使用updns config命令,然后调用vim编辑,或找到~/.updns/config编辑您可以指定标准域,也可以使用进行动态匹配正则表达式以~开头...

    入门学习Linux常用必会60个命令实例详解doc/txt

    ◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup; ◆ 系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who; ◆ 其它...

    Java开发技术大全 电子版

    13.7.4正则表达式中的其他通用规则424 13.7.5使用技巧425 13.8Pattern类的使用426 13.9Matcher类的使用428 13.9.1匹配方法的使用429 13.9.2替换方法的使用430 13.9.3组匹配的使用431 13.9.4检验E-mail的合法...

    网站架构技术

    正则表达式 trie树 双数组trie树 多级Hash表 信息降噪 分类算法_内容识别 黑名单 电子商务风险控制 风险 账户风险 买家风险 卖家风险 交易风险 风控 人工 自动 ...

    JAVA 范例大全 光盘 资源

    实例110 获取IP地址和域名 306 实例111 获取网络资源(URL) 308 实例112 FTP文件传输模拟 311 实例113 自制浏览器 316 实例114 点对点通信(Socket基于TCP协议) 323 实例115 点对面通信(Socket基于TCP/IP...

    Python入门网络爬虫之精华版

    常见的分析工具有正则表达式,BeautifulSoup,lxml等等。 存储 分析出我们需要的内容之后,接下来就是存储了。 我们可以选择存入文本文件,也可以选择存入MySQL或MongoDB数据库等。 存储有两个需要注意的问题: ...

    AMR超级站群系统源码 v1.0

    支持正则表达式替换、删除;支持Xpath语法替换、删除、增加或修改节点元素; 支持RSS订阅源的自定义调用:程序内置了百度风云榜调用规则,可以轻松在网页任何位置显示百度风云榜,并形成站内聚合搜索; 支持站内聚合...

    AMR超级站群系统最新官方版

    支持正则表达式替换、删除;支持Xpath语法替换、删除、增加或修改节点元素; 支持RSS订阅源的自定义调用:程序内置了百度风云榜调用规则,可以轻松在网页任何位置显示百度风云榜,并形成站内聚合搜索; 支持站内聚合...

    AMR采集系统(原万用小偷程序) v4.1

    支持正则表达式替换、删除;支持Xpath语法替换、删除、增加或修改节点元素; 支持RSS订阅源的自定义调用:程序内置了百度风云榜调用规则,可以轻松在网页任何位置显示百度风云榜,并形成站内聚合搜索; 支持站内聚合...

    Java开发技术大全(500个源代码).

    leapYearByLogical.java 用逻辑表达式判断闰年 lowToUpper.java 小写字母转换成大写字母 lozengeStar.java 输出一个由*组成的菱形 multiplyTable.java 求乘法口诀表 narrowingConversion_1.java 缩减转换引发...

Global site tag (gtag.js) - Google Analytics