我有条件验证一个号码。我的要求是只接受以下数字。
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]$/
我正在使用的系统是现有系统,我必须使用正则表达式。没有其他选择可供我使用。
任何人都可以帮助我吗?
答案 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)
答案 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;