"大于0小于等于30并且可以有小数但是小数不能超过两位并且不可以有0.0或者0.00" 的正则表达式怎么写? 5
1个回答
展开全部
分步考虑:
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 "正则"
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询