帮助我使用正则表达式。我需要检查小时和分钟的文字。这是第一种情况,文本可以是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,正确的答案
答案 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 ...