为什么js时间验证不能判断时间范围是否超过24?

2025-01-08 12:12:02
推荐回答(1个)
回答1:

你这种情况比较复杂!if(/^(d{1,2})(:)?(d{1,2})(:)?(d{1,2})$/.test(begintime))
改为
varmatchedArr=begintime.match(/^(d{1,2})(?::)?(d{1,2})(?::)?(d{1,2})$/);
if(matchedArr==null||matchedArr[1]>24||matchedArr[2]>60||matchedArr[3]>60)
//dosomething...........注意,因为用了?:所以数组是123而不是135
?:为匹配后不存储结果,节约内存,在非常长的字符串有很大优势,不过在这里写不写差不多。
你写的代码也是可以的,但是一般是不会这么写的。test方法返回的结果只是true和false,在测试字符串后,匹配结果不是返回给begintime变量,而是存在正则的全局对象RegExp中。
你的if那里应该改为if(RegExp.$1>24..................)
但是像你这种情况,建议写法是我上面提出的。而不是用RegExp.$N这种是有数量限制的,只有$1-$9可用。而且只是临时保存。