Asp.net 正则表达式,允许以15分钟为增量计算小时

Asp.net 正则表达式,允许以15分钟为增量计算小时,asp.net,javascript,regex,Asp.net,Javascript,Regex,我需要一个正则表达式,它将一个小时的输入限制在0-24之间,分数是.25的倍数。请记住,必须满足以下条件: 当整部分为0-23时,小数部分可以为.0、.25、.5或.75 当整数部分为24时,小数部分可以为.0 如果不存在完整部分,则小数部分必须为.0、.25、.5或.75 不允许使用空字符串 我很有信心,可以收紧以下表述,但这是迄今为止的情况: (^(([0-9])|(1[0-9])|(2[0-3]))(\.((0*)|(250*)|(50*)|(750*)))?$)|(^24(\.0*)?$

我需要一个正则表达式,它将一个小时的输入限制在0-24之间,分数是.25的倍数。请记住,必须满足以下条件:

当整部分为0-23时,小数部分可以为.0、.25、.5或.75 当整数部分为24时,小数部分可以为.0 如果不存在完整部分,则小数部分必须为.0、.25、.5或.75 不允许使用空字符串 我很有信心,可以收紧以下表述,但这是迄今为止的情况:

(^(([0-9])|(1[0-9])|(2[0-3]))(\.((0*)|(250*)|(50*)|(750*)))?$)|(^24(\.0*)?$)|(^\.((0+)|(250*)|(50*)|(750*))$)

更新:正则表达式验证在客户端javascript和服务器asp.net上都存在,c.

为什么您绝对需要将其作为正则表达式进行验证,原因是什么?转换成一个数字并进行一些基本检查要容易得多


检查乘以4的数字是否是一个自然数+1:是的,即使它在字符串中搜索一个与条件匹配的数字,但它不是,从锚判断,还是最好只匹配数字并在回调函数中进行验证。@Thorarin-好主意。为了回答你的问题,Regex对我来说似乎是一个合理的选择。验证同时存在于客户端javascript和服务器asp.net c上。谢谢。幸好我当时正在编写一个JavaScript实现,您可以根据CustomValidator进行调整:舍入错误不成问题的原因是所有分数0、0.25、0.5、0.75都是2的整数幂和。@caf:是的,我后来也意识到了这一点。但是我困了,有点醉了:P我决定试试这3个分数的情况。因为24.0和0.0是同一个时间,所以似乎不符合逻辑。@caf:除非你注册的是持续时间而不是时间。一个每天一小时的登记系统。我真诚地希望没有人需要使用24选项:当然,但是0.0长度的预订听起来有点可疑。@caf@Thorarin-我正在捕获类似于时间跟踪系统的持续时间。你说得对-0.0是一个奇怪的条目,但我认为它是有效的。+1表示努力。我更喜欢这个,因为它不使用lookback断言。使它更易于阅读,并且在语法上与更多的正则表达式实现兼容。+1-做得很好,这比我的尝试要好得多。为了这个,我将删除我的。
<script type="text/javascript">
function checkDuration(text)
{
    var tmp = parseFloat(text) * 4;
    return tmp >= 0 && tmp <= 96 && Math.ceil(tmp) == tmp;
}
</script>
^((1?\d|2[0-3])?(\.(0|[27]?5)0*)|(1?\d|2[0-4])(\.0*)?)$