jQuery - 检查适当的时间格式

jov*_*van 3 javascript jquery

我有一个输入字段,用户输入的格式为mm:hh.格式在字段内指定(默认值09:00)但我仍然想要执行客户端检查以查看格式是否正确.

由于现有的客户端验证是在jQuery中,我还想将它保存在jQuery中.

我主要是一个PHP程序员,所以我需要一些帮助以最佳方式编写这个程序员.

我知道我可以检查每个字符(前两个=数字,第三个=':',最后两个=数字)但是有一种方法可以更优雅地完成它,同时还检查小时数不大于23和分钟数不大于59?

在PHP中我会使用正则表达式,我假设jQuery有类似的东西?

这样的事情对我来说很有意义:

([01]?[0-9]|2[0-3]):[0-5][0-9]
Run Code Online (Sandbox Code Playgroud)

但我不太熟悉jQuery语法,所以我不知道如何处理它.

Wol*_*Dev 8

你也可以在JavaScript中使用正则表达式:

http://www.w3schools.com/jsref/jsref_obj_string.asp

使用.search() - http://www.w3schools.com/jsref/jsref_search.asp

或.match() - http://www.w3schools.com/jsref/jsref_match.asp

或.replace() - http://www.w3schools.com/jsref/jsref_replace.asp

编辑:

<script>
    var regexp = /([01][0-9]|[02][0-3]):[0-5][0-9]/;
    var correct = ($('input').val().search(regexp) >= 0) ? true : false;
</script>
Run Code Online (Sandbox Code Playgroud)

EDIT2:

这里是javascript中regexpobject的文档:

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

<script>
    var regexp = /([01][0-9]|[02][0-3]):[0-5][0-9]/;
    var correct = regexp.test($('input').val());
</script>
Run Code Online (Sandbox Code Playgroud)

EDIT3:

修复了正则表达式

  • @robert 为 `77:00` 返回 true 的原因是因为它匹配字符串的 `7:00` 部分。为了强制匹配整个字符串,请使用 [anchors](http://www.regular-expressions.info/anchors.html) 例如`^`(字符串的开头)和`$`(字符串的结尾)例如`/^([01]?[0-9]|2[0-3]):[0-5][0-9]$/` - 这将无法匹配`77:00`(或任何一部分)。 (2认同)