📜  正则表达式 ip 地址 (1)

📅  最后修改于: 2023-12-03 14:55:53.872000             🧑  作者: Mango

正则表达式 IP 地址

IP 地址是计算机网络中标识设备位置的地址,它通常由四个十进制数表示,每个数的取值范围是 0~255。如果你需要从一些数据中提取 IP 地址,或者验证一个字符串是否符合 IP 地址的格式,那么可以使用正则表达式。

基本规则

IP 地址的正则表达式可以分成两部分:匹配四个十进制数和限定每个数取值范围。四个十进制数的匹配可以用 \d{1,3} 来表示,其中 \d 是数字字符的缩写,{1,3} 表示最少一个数字,最多三个数字。限定数值范围可以使用前向零宽断言,匹配 0~199 可以写成 (1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?),说明如下:

  • (1?\d{1,2}| 表示匹配 0~199 中的数值,1? 表示 0 或 1 的可选项,\d{1,2} 表示匹配 1~99 或 100~199 中的数值(如果第一个数字是 0,则只能匹配一个数字)。
  • 2([0-4]\d|5[0-5])| 表示匹配 200~255 中的数值,2 表示第一个数字是 2,[0-4]\d 表示第二个数字是 0~4 中的数,\d 表示第三个数字是任意数字,5[0-5] 表示第二个数字是 5,第三个数字是 0~5 中的数。
  • [1-9]\d?) 表示匹配 1~99 中的数值,第一个数字为 1~9,第二个数字可以省略,或者是 0~9 中的任意数字。

四个十进制数可以使用 \. 进行分隔,整个正则表达式如下:

\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)
实例

下面是一些验证 IP 地址的示例:

import re

def is_valid_ip(ip):
    regex = r'\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)\.\d{1,3}(1?\d{1,2}|2([0-4]\d|5[0-5])|[1-9]\d?)'
    return True if re.match(regex, ip) else False

# 测试
print(is_valid_ip('192.168.1.1')) # True
print(is_valid_ip('256.168.1.1')) # False
print(is_valid_ip('255.256.1.1')) # False
print(is_valid_ip('255.255.256.1')) # False
结论

本文介绍了正则表达式 IP 地址的规则和实例。如果你想深入学习正则表达式,可以阅读 Python3 中的正则表达式