用Js判断输入的时间是否有效

JavaScript014

用Js判断输入的时间是否有效,第1张

实例:检测输入的日期时间格式是否正确。

<script type="text/javascript">

function checknow(){

var obj = document.getElementById("dt")

if(!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(obj.value)) alert("请输入正确的日期时间格式!")

}

</script>

<input type="text" id="dt" value="2016-09-09 11:08:33" />

<input type="button" value="检测" onClick="checknow()" />

以上实例点击检测后无报错,表示格式正确。你故意改错再检测就会出现错误提示了。

如果只需要检测日期或时间,可以自己改一下正则式,应该容易看懂的。

if(/^(\d{1,2})(:)?(\d{1,2})(:)?(\d{1,2})$/.test(begintime))

改为

var matchedArr = begintime.match(/^(\d{1,2})(?:\:)?(\d{1,2})(?:\:)?(\d{1,2})$/)

if(matchedArr == null || matchedArr[1]>24 || matchedArr[2]>60 || matchedArr[3]>60)

//do something........... 注意,因为用了?:所以数组是1 2 3而不是1 3 5

?: 为匹配后不存储结果,节约内存,在非常长的字符串有很大优势,不过在这里写不写差不多。

你写的代码也是可以的,但是一般是不会这么写的。 test方法返回的结果只是true和false,在测试字符串后,匹配结果不是返回给begintime变量,而是存在正则的全局对象RegExp中。

你的if那里应该改为if(RegExp.$1 >24 ..................)

但是像你这种情况,建议写法是我上面提出的。而不是用RegExp.$N 这种是有数量限制的,只有$1 - $9可用。而且只是临时保存。