要捕获IPv4地址中不正确的部分,可以使用以下正则表达式:
import re
def check_ipv4_address(ip):
pattern = r'(\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(\.(?!$)|$)){4}'
match = re.fullmatch(pattern, ip)
if match:
return 'Valid IPv4 address'
else:
return 'Invalid IPv4 address'
# 测试用例
print(check_ipv4_address('192.168.0.1')) # Valid IPv4 address
print(check_ipv4_address('256.0.0.1')) # Invalid IPv4 address
print(check_ipv4_address('192.168.0')) # Invalid IPv4 address
print(check_ipv4_address('192.168.0.1.1')) # Invalid IPv4 address
这里的正则表达式(\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b(\.(?!$)|$)){4}
用来匹配一个合法的IPv4地址。
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
:匹配0-255之间的数字,可以是单个数字、两位数字或三位数字。使用\b
来匹配边界,确保只匹配完整的数字。(\.(?!$)|$)
:匹配一个.
,但不允许出现在字符串末尾。这样可以确保地址的最后一部分没有多余的.
。{4}
:表示前面的模式匹配四次,即匹配四个部分。如果输入的IP地址符合IPv4地址的格式,函数返回"Valid IPv4 address",否则返回"Invalid IPv4 address"。