一般 ip 分成 5 类:
A 类地址
1 第 1 字节为网络地址, 其它 3 个字节为主机地址.
2 范围: 1.0.0.1-126.155.255.254
3 私有地址和保留地址:
1 10.X.X.X 是私有地址 (所谓的私有地址就是在互联网上不使用, 而被用在局域网络中的地址).
2 127.X.X.X 是保留地址, 用做循环测试用的.
B 类地址
1 第 1 字节和第 2 字节为网络地址, 其它 2 个字节为主机地址.
2 范围: 128.0.0.1-191.255.255.254
3 私有地址和保留地址
1 172.16.0.0-172.31.255.255 是私有地址
2 169.254.X.X 是保留地址. 如果你的 IP 地址是自动获取 IP 地址, 在网络上又没有找到可用的 DHCP 服务器. 就会得到其中一个 IP.
C 类地址
1 第 1 字节, 第 2 字节和第 3 个字节为网络地址, 第 4 个个字节为主机地址. 另外第 1 个字节的前三位固定为 110.
2 范围: 192.0.0.1-223.255.255.254
3 私有地址:
192.168.X.X 是私有地址.
D 类地址
1 不分网络地址和主机地址, 它的第 1 个字节的前四位固定为 1110.
2 范围: 224.0.0.1-239.255.255.254
E 类地址
1 不分网络地址和主机地址, 它的第 1 个字节的前五位固定为 11110.
2 范围: 240.0.0.1-255.255.255.254
那么我们匹配 ip, 要从 0-255 匹配, 由于第一位不能为 0, 最后一位不能为 255, 即正则匹配表达式为
- (^([1-9]|1[0-9]|1[1-9]{
- 2
- }|2[0-4][0-9]|25[0-5])\.)(([0-9]{
- 1,2
- }|1[1-9]{
- 2
- }|2[0-4][0-9]|25[0-5])\.){
- 2
- }([0-9]{
- 1,2
- }|1[1-9]{
- 2
- }|2[0-5][0-9]|25[0-4])$
- [root@shell ~]# cat ip.txt
- 112.456.44.55
- 192.168.12.43
- 256.18.56.1
- 25.34.345.7
- 25.34.83.645
- 10.0.0.1
- [root@shell ~]# egrep '(^([1-9]|1[0-9]|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.)(([0-9]{1,2}|1[1-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([0-9]{1,2}|1[1-9]{2}|2[0-5][0-9]|25[0-4])$' ip.txt
- 192.168.12.43
- 10.0.0.1
来源: https://www.cnblogs.com/wzxmt/p/9899654.html