解析时间字符串

时间:2013-03-28 20:03:08

标签: javascript regex

在Javascript或jquery中,有没有办法验证给定的字符串是h:m还是hh:mm格式还是h格式。 例如:

5 //legal    
2.5 //legal
.5 //legal
2:05 //legal
:5 //NOT legal
2:61 // NOT legal

这个想法是,如果字符串可以解析为double,或者它可以用h:m格式解析,那么就可以了。

这不是24小时的时间,33:44完全有效,这是为了进入工作时间。

由于

4 个答案:

答案 0 :(得分:0)

function test(str) {
  if (!isNaN(str)) return true;
  $parts = str.split(':');
  return !isNaN(str[0]) && !isNaN(str[1]) && (+str[1]) <= 60;
}

答案 1 :(得分:0)

如果您想要持续时间(以便h可以是任何值),请使用正则表达式测试数字和时间,如:

/^(?:\.\d+|\d+(?:\.\d*)?|\d+:[0-5]?\d)$/.test(str)

为法律案件返回true,而false则返回

答案 2 :(得分:0)

我认为问题可以用这样的代码解决:

function validate(value) {
           if (!parseFloat(value)) {
              var values = value.split(':');
              if (!parseInt(values[0]) || parseInt(values[1]) >= 60) {
                 return false;
              }
           }
           else {
             var values = value.split('.');
             if (parseInt(values[1]) >= 60)
                return false;
           }
           return true;
}

答案 3 :(得分:0)

尝试

/^(\d+|\d*(\.[0-5]?\d)|\d+(:[0-5]?\d)?)$/

E.g。

function verify( time ) {
    return /^(\d+|\d*(\.[0-5]?\d)|\d+(:[0-5]?\d)?)$/.test( time ); 
}  

verify( '24:00' );    // true