我需要使用Regex验证JavaScript字符串,例如“ 03:39”。遵循规则,
1.字符串的第一部分位于(:)之前,允许从0到24
2.字符串()之后的第二部分允许从0到59
3.两部分的单位数可以以0开头(如01或02)或以0开头(如1、2)。
现在,我写了下面的JavaScript正则表达式代码。
var dateRegEx = /^n(0[0-2][0-4]|[0-24])(:)(0|[0-5][0-9]|[0-59])$/;
if ($(element).val().match(dateRegEx) === null) {
// my rest of the code
}
现在,当用户插入0:38、01:38或02:59时,它将得到验证,但是当第一部分在2之后(如03:38)变大时,它将不验证字符串。那么我在做什么错?
在数小时内,您的电流0[0-2][0-4]
要求三位数字(其中任何一个都不能大于4),而[0-24]
只能匹配一位数字(0、1、2或4)。
相反,要匹配小时数(00到24),您应该使用(?:2[0-4]|[01]?[0-9])
; 可以是2,后跟0到4之间的数字,也可以是(可选)0或1后跟任何其他数字。
要匹配分钟(00到59),请使用[0-5]?[0-9]
-0到5之间的可选数字,然后是0到9之间的数字。
^(?:2[0-4]|[01]?[0-9]):[0-5]?[0-9]$
https://regex101.com/r/0QxX7w/1
请注意,如果您只匹配单个字符,例如:
,请勿将其放在字符集中。另外,由于您不希望n
在比赛开始时添加,因此请将其从图案的开头删除。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句