Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-检查正确的时间格式_Javascript_Jquery - Fatal编程技术网

Javascript jQuery-检查正确的时间格式

Javascript jQuery-检查正确的时间格式,javascript,jquery,Javascript,Jquery,我有一个输入字段,用户以mm:hh格式输入时间。该格式在字段中指定(默认值09:00),但我仍然希望执行客户端检查,以查看格式是否正确 由于现有的客户端验证在jQuery中,因此我也希望将其保留在jQuery中 我主要是一个PHP程序员,所以我需要一些帮助,以最佳的方式编写这篇文章 我知道我可以检查每个字符(前两个=数字,第三个=':',最后两个=数字),但有没有办法更优雅地检查,同时检查小时计数不大于23,分钟计数不大于59 在PHP中,我会使用正则表达式,我假设jQuery也有类似的东西 这

我有一个输入字段,用户以mm:hh格式输入时间。该格式在字段中指定(默认值09:00),但我仍然希望执行客户端检查,以查看格式是否正确

由于现有的客户端验证在jQuery中,因此我也希望将其保留在jQuery中

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

我知道我可以检查每个字符(前两个=数字,第三个=':',最后两个=数字),但有没有办法更优雅地检查,同时检查小时计数不大于23,分钟计数不大于59

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

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

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

但是我对jQuery语法不太熟悉,所以我不确定该怎么处理它。

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

使用 .search()-

或.match()

或。替换()

编辑:

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

var regexp=/([01][0-9]|[02][0-3]):[0-5][0-9]/;
var correct=($('input').val().search(regexp)>=0)?真:假;
EDIT2:

以下是javascript中regexpobject的文档:


var regexp=/([01][0-9]|[02][0-3]):[0-5][0-9]/;
var correct=regexp.test($('input').val());
EDIT3:

修复了JavaScript中的regexp可以用来匹配字符串和正则表达式的问题


我对正则表达式的经验非常有限,因此我无法帮助您使用该模式,但是如果您设置了
。match()
应该就是全部了。

在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);
要实际提取匹配项,需要使用JS函数


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

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

var valid = moment(timeStr, "HH:mm", true).isValid();
我想如果你已经在你的项目中使用了,就没有坏处了


由于您没有特别要求使用正则表达式来回答问题,我认为这一点值得一提。

谢谢,这很有效。只有一个问题,它允许任何两位数字输入为“hh”。例如,它接受77:00作为适当的时间。我看不出它为什么会看regex,可以吗?尝试使用
/([01][0-9]|[02][0-3]):[0-5][0-9]/
@robert对于
77:00
它之所以返回true是因为它匹配了字符串的
7:00
部分。为了强制匹配整个字符串,请使用
^
(字符串的开头)和
$
(字符串的结尾)例如
/^([01]?[0-9]| 2[0-3]):[0-5][0-9]$/
-这将无法匹配
77:00
(或其任何部分)。
var valid = moment(timeStr, "HH:mm", true).isValid();