jQuery - 检查适当的时间格式

时间:2012-04-16 11:56:29

标签: javascript jquery

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

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

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

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

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

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

([01]?[0-9]|2[0-3]):[0-5][0-9]

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

4 个答案:

答案 0 :(得分: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>

<强> 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>

<强> EDIT3:

修复了正则表达式

答案 1 :(得分:4)

在JavaScript中,正则表达式由/分隔。所以你会做...

var isValidTime = /([01]?[0-9]|2[0-3]):[0-5][0-9]/.test(inputString);

您的正则表达式似乎对以HH:mm格式验证任何24小时时间是有意义的。然而,正如我在Andreas的答案中的评论中所述 - 如果字符串的任何部分匹配,则返回true。要使其验证整个字符串,请使用锚点来匹配字符串的开头和结尾,例如......

var isValidTime = /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(inputString);

要实际提取匹配项,您需要使用string.match JS函数。

哦 - 请注意jQuery Javascript - 它只是一个非常有用的库!但是,此示例不包含对jQuery库的引用。

答案 2 :(得分:2)

在JavaScript中,您可以使用yourstring.match(regexp)将字符串与正则表达式匹配。

我的RegEx体验非常有限,所以我无法帮助你解决这个模式,但如果你有这个设置.match()应该只需要它。

答案 3 :(得分:1)

一种不同的方法,但使用额外的javascript lib而不是正则表达式:

var valid = moment(timeStr, "HH:mm", true).isValid();

我想如果你已经在项目中使用moment.js,那就没有缺点了。

由于您没有使用正则表达式专门请求答案,我认为这是有效的。