数字范围正则表达式到1位小数

时间:2016-02-03 04:38:15

标签: regex

我试图为以下数值范围编写正则表达式,但需要一些帮助才能正确编写它们。

要匹配的所有数值都是1位小数。

  • 0.0至59.9
  • 60.0至119.9
  • 120.0至239.9
  • 240.0至419.9
  • 1200.0至1799.9
  • 任何大于3600.0
  • 的内容

我相信我能够正确地为0.0到59.9的范围获得正确的正则表达式,但是对其他人来说却遇到了困难。

^[1-5]?([1-9](?:\.[0-9])?|0?\.[1-9])$

2 个答案:

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

您正在使用错误的工具来完成工作。虽然你可以使用正则表达式做你正在尝试做的事情,但它并不适合做得好,更不用说有效了。简单的ifelse ifelse结构最适合您。如果要在执行检查时忽略第一个小数位后的任何内容,可以使用.toFixed(1),然后使用parseFloat(string)将其转换回浮点数。您还可以使用Math.round(float),具体取决于您希望如何处理多个小数位的数字。

注意:给出的具体功能是JavaScript示例,具体取决于您的语言,它们可能略有不同。