javascript正则表达式

时间:2011-01-10 12:09:08

标签: javascript jquery regex

帮助我使用正则表达式。我需要检查小时和分钟的文字。这是第一种情况,文本可以是0到12.在第二种情况下,文本可以是1到60.

这是我的代码:

var hourRegEx = /^([0-9]{2})$/; //You can fix this line of code?

$(document).ready(
  function(){
     $('form.form').submit(function(){ 
  if( $('input.hour').val().match(hourRegEx) ){
      return true;
  } 
  return false;
  });
});

在我的情况下,代码说,例如52,正确的答案

8 个答案:

答案 0 :(得分:3)

如果您固有的做法是比较数字,那么您真的不应该使用正则表达式

我会这样做:

var numericRegEx = /^[0-9]+$/;  

$(document).ready(
  function(){
     $('form.form').submit(function(){  
        var hourVal = $('input.hour').val();
        if( hourVal.match(numericRegEx) && parseInt(hourVal) <= 11){
            return true;
        }   
        return false;
     });


});

这可能过于复杂;如果我这样做,我只会使用parseInt,但原始代码将返回false,例如“11blah”,因此仍然使用一些正则表达式功能来检查整个字符串是否为整数。

答案 1 :(得分:3)

我会使用parseInt和数字检查执行此操作:

var hour = parseInt($('input.hour').val(), 10);
if((hour >= 0) && (hour <= 11)){
    return true;
}

答案 2 :(得分:2)

使用:/^([0-9]|10|11|12)$/。它足够短,非常清楚:)

编辑:或者,如果@Jamiec是对的并且您对数字有误,/^([0-9]|10|11)$/

分钟,请使用:/^([0-9]|[1-5][0-9])$/

编辑2:啊等待,1到60.使用此:

/^([1-9]|[1-5][0-9]|60)$/

以及1-12小时,如果您需要:

/^([1-9]|10|11|12)$//^([1-9]|1[0-2])$/

答案 3 :(得分:2)

为什么不将其转换为整数并使用<?正则表达式不是整数算术的替代品。

答案 4 :(得分:1)

此:

[1-9]|1[0-2]将匹配小时(1 ... 12)

[1-9]|[1-5][0-9]|60将匹配分钟(1 .. 60)

如果你想匹配0 .. 11和0 .. 59这样做

[0-9]|1[0-1]将匹配小时(0 ... 11)

[0-9]|[1-5][0-9]将匹配分钟(0 .. 59)

如果你想匹配00 .. 11和00 .. 59这样做

0[0-9]|10|11将匹配小时(00 .. 11)

[0-5][0-9]将匹配分钟(00 .. 59)

答案 5 :(得分:1)

用于测试0到12之间的数字的RegEx将与^([0-9]|1[012])$以及会议记录一致:^[1-9]|[2-5][0-9]$

我不会推荐它。就个人而言,我使用parseInt将值作为数字。您可以检查它是否为有效号码,因为parseInt如果不是NaN将返回var hourVal = parseInt($('input.hour').val(),10), minVal = parseInt($('input.minute').val(),10); if(hourVal && hourVal >=0 and hourVal <= 12){ // hour valid } if(minVal && minVal >=1 and minVal <= 60){ // min valid } 。然后你可以进行范围检查。

{{1}}

答案 6 :(得分:1)

这也应该处理用户输入00-09:

的情况
/^(0?[0-9]|1[0-2])$/

答案 7 :(得分:1)

对于这种情况,使用正则表达式是不可行的。你应该比较整数,因为'1','01','001'也是有效的。

我推荐这种代码片段

val = parseInt($('input.hour').val());
if (val >= 0 && val <= 12)
    // is valid ...