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

作者:mrr 时间:2023-06-17 05:55:48 

一个完整的域名,由根域、顶级域、二级、 * ……域名构成,每级域名之间用点分开,每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,长度不超过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})+\.?

一个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的数是不能被匹配的。

因此,最上面(1. 部分)的写法才是正确完整版的,(2. 部分)的写法较为片面

标签:匹配域名,匹配ip,正则表达式
0
投稿

猜你喜欢

  • Django程序的优化技巧

    2023-11-10 00:29:24
  • Python科学计算之Pandas详解

    2023-07-21 19:12:51
  • python 共现矩阵的实现代码

    2021-12-22 14:42:33
  • sqlserver对字段的添加修改删除、以及字段的说明

    2024-01-25 23:43:41
  • Python 文件数据读写的具体实现

    2023-07-08 12:15:06
  • 基于HTML+JS实现简单的年龄计算器

    2024-04-23 09:27:29
  • NLTK的安装教程及安装错误解决方案

    2022-09-24 04:59:33
  • 详解Python中的type和object

    2021-03-25 13:00:58
  • 实例讲解MySQL数据库中文问题的解决方法

    2008-12-31 15:15:00
  • mysql事务管理操作详解

    2024-01-20 10:35:29
  • Python制作动态字符画的源码

    2022-11-18 09:13:48
  • Ubuntu查看修改mysql的登录名和密码、安装phpmyadmin

    2023-11-21 23:36:59
  • Oracle开发之报表函数

    2023-07-23 16:29:00
  • 实例讲解Oracle到SQL Server主键迁移

    2009-03-25 13:30:00
  • MySQL redo死锁问题排查及解决过程分析

    2024-01-17 08:17:02
  • 聊聊Javascript中try catch的2个作用

    2024-04-22 13:25:57
  • Django ORM 多表查询示例代码

    2021-07-25 05:22:02
  • php从文件夹随机读取文件的方法

    2023-11-21 16:38:35
  • 详解win10下pytorch-gpu安装以及CUDA详细安装过程

    2023-07-01 07:21:36
  • pytorch 带batch的tensor类型图像显示操作

    2023-06-02 08:47:26
  • asp之家 网络编程 m.aspxhome.com