"大于0小于等于30并且可以有小数但是小数不能超过两位并且不可以有0.0或者0.00" 的正则表达式怎么写? 5

 我来答
百度网友5311d79
推荐于2018-05-17 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3218万
展开全部

分步考虑:


1. 先不考虑小数,只考虑 大于0小于等于30的整数

^([1-9]|[12][0-9]|30)$

只有1位数的时候不能为0。


2. 大于0小于等于30并且可以有小数但是小数不能超过两位并且不可以有0.0或者0.00

^(([1-9]|[12][0-9]|30)|(([1-9]|[12][0-9])\.[0-9][0-9]{0,1})|(0\.(0[1-9]|[1-9][0-9]{0,1}))|(30\.0{1,2}))$

这就是最终你要的正则。

与1不同的是加入了对小数部分的考虑,并且以下两点需要拿出来单独考虑:

1)增加匹配整数部分为0的情况,但整数为0时要求小数部分不全为0,而“小数部分不全为0”又要分解为两种情况,即,若第一位小数为0则必须存在第二位小数且不为0;第一位小数不为0则第二位小数可以没有也可以是[0-9]的任意数。

2)30.0和30.00是允许的。

因此需要在1的基础上再叠加上这些正则条件。

 

你可以测试。

echo "x" | grep -E "正则"
echo "xx" | grep -E "正则"
echo "xxx" | grep -E "正则"
echo "x.x" | grep -E "正则"
echo "x.xx" | grep -E "正则"
echo "x.xxx" | grep -E "正则"
echo "xx.x" | grep -E "正则"
echo "xx.xx" | grep -E "正则"
echo "xx.xxx" | grep -E "正则"
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式