使用正则表达式在javascript中验证十进制数的范围

时间:2015-09-16 10:08:00

标签: regex

我有条件验证一个号码。我的要求是只接受以下数字。

0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5

我试过这个正则表达式,但是对于十进制数字它会返回false。

/^[0|0.5|1|1.5|2|2.5|3|3.5|4|4.5|5]$/

我正在使用的系统是现有系统,我必须使用正则表达式。没有其他选择可供我使用。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:2)

你的表达几乎是正确的:

/^(0|0\.5|1|1\.5|2|2\.5|3|3\.5|4|4\.5|5)$/

您需要使用圆括号而不是方括号来逃避点。圆括号表示组,而方括号定义可以匹配的一组单个字符。一个较短的变体是:

/^([0-4](\.5)?|5)$/

这将匹配0到4之间的任何数字,可选地后跟.5或单个数字5。

答案 1 :(得分:0)

您可以尝试下面的正则表达式。

^(?:[0-4](?:\.5)?|5)$
  • [0-4]将匹配0到4之间的数字范围。
  • (?:\.5)?可选.5

DEMO

答案 2 :(得分:-1)

您应该真正了解是否可以使用函数,而不是使用正则表达式。

这将是您最好的选择,然后:



function check(num) {
    var floored = Math.floor(num);
    return (num === floored || num - 0.5 === floored) && num >= 0 && num <=5;
}

alert(1 + ' ' + check(1) + '\n' +
      5 + ' ' + check(5) + '\n' +
      6 + ' ' + check(6) + '\n' +
      1.5 + ' ' + check(1.5) + '\n' +
      4.5 + ' ' + check(4.5) + '\n' +
      5.5 + ' ' + check(5.5) + '\n' +
      5.51 + ' ' + check(5.51) + '\n' +
      -1.5 + ' ' + check(-1.5) + '\n' +
      -0.5 + ' ' + check(-0.5))
&#13;
&#13;
&#13;

相关问题