IP和域名正则表达式

分享到: 更多
By admin, 2011年07月11日

 一个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的数是不能被匹配的。
  太麻烦,不如自己写一小段代码解析来得容易,呵呵
  
  --------------------------------------------------------------------------------
  
  一个完整的域名,由根域、顶级域、二级、三级……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过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})+\.?

  如果 如果没有点也可以的话 这样:
  ([a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?

  如果想要标准的有两个点 :
  \w+([-+.]\w+)*\.\w+([-.]\w+)*\.\w+([-.]\w+)*

正则表达式 在线验证网址;    http://app.baidu.com/regextester

随机文章

查询郑州住房公积金帐户信息
检查死链接工具XENU
Discuz发帖直接复制图片和表格
discuz 如何在帖子中插入播放FLASH动画,视频和音乐
Google AdSense提高点击率技巧大揭密
WordPress错误Fatal error: Maximum execution time of 30 seconds exceeded in
Discuz7.2首页五格下载及首页多格美化
WordPress,Drupal,DedeCms搭建CMS系统优劣
如何在wordpress blog加入google ajax search?
Google AdSense网站验证功能

Comments are closed