RegEx针对特定的日期格式和条件

时间:2013-08-06 18:13:51

标签: javascript jquery regex validation razor

我找到(dd / MM / yyyy HH:mm:ss)[24小时]的正则表达式

( ^(([0-2]?[0-9]|3[0-1])/([0]?[1-9]|1[0-2])/[1-2]\d{3}) (20|21|22|23|[0-1]?\d{1}):([0-5]?\d{1}):([0-5]?\d{1})$ )

可以请任何人为我(MM/dd/yyyy hh:mm:ss TT) [12小时]提供一个RegExp。检查条件如下,

  1. yyyy> = 1970

  2. dd&& MM> = 01(双位数字,而不是单个数字)。

3 个答案:

答案 0 :(得分:4)

如果您希望正则表达式解决整个问题,请尝试以下方法:

^((?:[0][1-9])|(?:[1][1-2]))/((?:[0][1-9])|(?:[1-2][0-9])|(?:[3][0-1]))/((?:19[7-9][0-9])|(?:[2-9][0-9]{3})) ((?:1[0-2])|(?:0[1-9])):([0-5][0-9]):([0-5][0-9]) ([PA]M)$

Regular expression visualization

View on Debuggex

答案 1 :(得分:2)

不要在正则表达式中做数学。

^(\d{1,2})/(\d{1,2})/(\d{4}) (?\d{1,2}):(\d{1,2}):(\d{1,2})( [AP]M)?$

var groups = input.match(regex);
var valid = groups
       && Number(groups[1]) > 0 && Number(groups[1]) <= 31
       && Number(groups[2]) > 0 && Number(groups[2]) <= 12
       && Number(groups[3]) >= 1970
       && Number(groups[4]) < (groups[7] ? 12 : 24)
       && Number(groups[5]) < 60
       && Number(groups[6]) < 60

如果您确实需要在正则表达式中对此进行编码,请参阅http://www.regular-expressions.info/numericranges.html

答案 2 :(得分:1)

试试这个正则表达式:

^(([0-2]?[0-9]|3[0-1])/([0]?[1-9]|1[0-2])/[1-2]\d{3}) (20|21|22|23|[0-1]?\d{1}):([0-5]?\d{1}):([0-5]?\d{1}) [AP]M$

PS:我刚刚添加了部分以包含AM / PM,但未验证您之前正在使用的正则表达式。