浮点数小于或等于4.5的正则表达式

时间:2019-03-18 05:36:28

标签: regex

我正在尝试^[0-4][\.][0-5][0-9]*,但它也适用于像4.56这样的数字,并且它不匹配像3.958这样的数字

2 个答案:

答案 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

这表示要匹配03,后跟任意可选的小数部分,或者匹配4,后跟04,再匹配其他任何数字。交替的最后一部分允许任何负数。

Demo

但是,话虽这么说,进行这种比较的简单得多的方法是在编程语言中使用不等式运算符。例如,可以使用以下命令在Java中替换上述复杂的正则表达式:

float f = 3.4f;
if (f <= 4.5f) {
    System.out.println("match");
}

答案 1 :(得分:0)

尝试一下:

^(?!.*4\.([5]+[0]*[1-9]+|[6-9][0-9]*))([0-4](?:\.[0-9]*)?)$|(\-[0-9]+\.?[0-9]*)$

DEMO