我正在尝试^[0-4][\.][0-5][0-9]*
,但它也适用于像4.56
这样的数字,并且它不匹配像3.958
这样的数字
答案 0 :(得分:6)
考虑此模式:
^(?:[0-3](?:\.[0-9]+)?|4(?:\.[0-4][0-9]*)?|4\.50*|-[0-9]+(?:\.[0-9]+)?)$
^^^ ^^^ ^^^ ^^^
0 to 3 4.0...4.4999... 4.5 any negative number
这表示要匹配0
至3
,后跟任意可选的小数部分,或者匹配4
,后跟0
至4
,再匹配其他任何数字。交替的最后一部分允许任何负数。
但是,话虽这么说,进行这种比较的简单得多的方法是在编程语言中使用不等式运算符。例如,可以使用以下命令在Java中替换上述复杂的正则表达式:
float f = 3.4f;
if (f <= 4.5f) {
System.out.println("match");
}
答案 1 :(得分:0)