大于等于30怎么写?
分步考虑:
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?"正则"