Linux正则表达式,IP地址的匹配模式

文章讲述了如何利用Linux的正则表达式(包括BRE和ERE)来分析和验证IP地址的合法性。作者将IP地址分为四个部分,并详细说明了每个部分的数字范围及匹配模式。然后提供了一个bash脚本,该脚本读取用户输入的IP地址并使用正则表达式检查其是否符合0-255的数字格式,从而判断IP地址是否合法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 前置知识是Linux的基本正则表达式,和扩展正则表达式,即:

POSIX基础正则表达式(basic regular expression,BRE)

POSIX扩展正则表达式(extended regular expression,ERE)

1. 分析问题

这个问题最重要的就是对问题的分析。

合法的十进制IP地址的范围是[0.0.0.0 -255.255.255.255]

IP地址应当是全数字的,以三个“.”划分为4个字段,每个字段是0-255的数字。

对于0到255区间内的数字可以分为5类:

分类数字区间匹配模式
1位数0-9[0-9]
2位数10-99[1-9][0-9]
1开头的三位数100-1991[0-9]{2}
2开头十位是0到4的三位数200-2492[0-4][0-9]
2开头十位是5的三位数250-25525[0-5]

2. Linux下匹配模式实现

把IP地址分为四个部分:

分类

解释
1第一个部分以数字开头,以“.”结尾
2第二个部分数字加“.”
3第三个部分数字加“.”
4

第四个部分数字结尾

 判断输出IP地址是否合法的脚本如下:

#!/bash
echo "Please input IP address:"
read tmp

pattern="([0-9]|[1-9][0-9]|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])"

regstr="^$pattern\.$pattern\.$pattern\.$pattern$"

if [[ $tmp =~ $regstr ]]
then
	echo "Right IP!"
else
	echo "Bad IP!"
fi

其中,

pattern变量储存数字0到255的匹配模式,双引号不能省略。

regstr变量是整个IP的地址的匹配模式。

if语句中的判断,运算符"=~"左侧写字符串,右侧写匹配模式。注意双中括号“[[]]”里两端各有空格。

演示:

 

如有错误,谢谢指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值