【ipv4&正则】ipv4相关的正则表达式

2023-03-25  本文已影响0人  Bogon

怎么用一个shell正则表达式匹配所有ipv4地址?

可以使用以下正则表达式来匹配所有IPv4地址:

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

这个正则表达式的含义是:

^ 表示匹配字符串的开头

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?). 表示匹配一个数字,可以是0-255之间的数,或者是一位或两位的数字,后面跟一个点号{3} 表示前面的表达式重复3次,匹配3个数字和3个点号

(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) 表示匹配最后一个数字,可以是0-255之间的数,或者是一位或两位的数字$ 表示匹配字符串的结尾

使用这个正则表达式,可以匹配所有IPv4地址,例如:

192.168.1.1
10.0.0.1
172.16.0.1

注意,这个正则表达式只能匹配符合IPv4地址规范的字符串,不能匹配其他格式的字符串,例如IPv6地址、主机名等。

怎么用一个shel正则匹配所有CIDR 私网ip地址?

可以使用以下正则表达式来匹配所有CIDR表示的私网IP地址:

\b(10\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(172\.(1[6-9]|2[0-9]|3[0-1])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|(192\.168\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\/([1-2]?[0-9]|3[0-2])\b

这个正则表达式的含义是:

\b 表示匹配单词边界,避免匹配到IP地址的一部分
(10.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) 表示匹配10.x.x.x格式的私网IP地址
| 表示或者
(172.(1[6-9]|2[0-9]|3[0-1]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) 表示匹配172.16.x.x到172.31.x.x格式的私网IP地址
| 表示或者
(192.168.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])) 表示匹配192.168.x.x格式的私网IP地址
/([1-2]?[0-9]|3[0-2]) 表示匹配CIDR表示法中的子网掩码,可以是1-32之间的数字

使用这个正则表达式,可以匹配所有CIDR表示的私网IP地址,例如:

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

注意,这个正则表达式只能匹配符合CIDR表示法的私网IP地址,不能匹配其他格式的IP地址。

上一篇 下一篇

猜你喜欢

热点阅读