我试图为以下数值范围编写正则表达式,但需要一些帮助才能正确编写它们。
要匹配的所有数值都是1位小数。
我相信我能够正确地为0.0到59.9的范围获得正确的正则表达式,但是对其他人来说却遇到了困难。
^[1-5]?([1-9](?:\.[0-9])?|0?\.[1-9])$
答案 0 :(得分:1)
检查一下:
// 0.0 to 59.9
^[012345]?[0-9]\.[0-9]$
//60.0 to 119.9
^(?:[6789]|10|11)[0-9]\.[0-9]$
//120.0 to 239.9
^(?:1[0-9]{2}|2[0123][0-9])\.[0-9]$
//240.0 to 419.9
^(?:2[456789][0-9]|3[0-9]{2}|4[01][0-9])\.[0-9]$
//1200.0 to 1799.9
^(?:1[234567])[0-9]{2}\.[0-9]$
//Anything greater than 3600.0
^(?:36[0-9]{2}|3[789][0-9]{2}|[456789][0-9]{3}|[0-9]{5}[0-9]*)\.[0-9]$
答案 1 :(得分:0)
您正在使用错误的工具来完成工作。虽然你可以使用正则表达式做你正在尝试做的事情,但它并不适合做得好,更不用说有效了。简单的if
,else if
和else
结构最适合您。如果要在执行检查时忽略第一个小数位后的任何内容,可以使用.toFixed(1)
,然后使用parseFloat(string)
将其转换回浮点数。您还可以使用Math.round(float)
,具体取决于您希望如何处理多个小数位的数字。
注意:给出的具体功能是JavaScript示例,具体取决于您的语言,它们可能略有不同。