我需要一个正则表达式,它限制从0到24小时输入,小数为.25的倍数。请记住,必须满足以下条件:
我非常有信心可以收紧以下表达方式,但这是迄今为止所采用的措施:
(^(([0-9])|(1[0-9])|(2[0-3]))(\.((0*)|(250*)|(50*)|(750*)))?$)|(^24(\.0*)?$)|(^\.((0+)|(250*)|(50*)|(750*))$)
更新:正则表达式验证存在于客户端(javascript)和服务器(asp.net,c#)上。
答案 0 :(得分:11)
为什么你绝对,积极地需要这样做作为正则表达式的原因是什么?转换为数字并进行一些基本检查会更容易。
检查数字乘以4是否是自然数<= 96,已完成。
根据您的个人资料判断,您可能正在使用.NET。我假设您希望将此作为正则表达式,因为您正在使用它进行客户端验证。我会认真考虑使用带有客户端JavaScript的CustomValidator。
JavaScript的这些方面:
<script type="text/javascript">
function checkDuration(text)
{
var tmp = parseFloat(text) * 4;
return tmp >= 0 && tmp <= 96 && Math.ceil(tmp) == tmp;
}
</script>
编辑:我在使用浮点数时略微担心舍入错误,但似乎可以解决所有可能的情况。
答案 1 :(得分:4)
^((1?\d|2[0-3])?(\.(0|[27]?5)0*)|(1?\d|2[0-4])(\.0*)?)$