1

我发现 (dd/MM/yyyy HH:mm:ss) [24 Hours] 的正则表达式为

( ^(([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 小时] 的正则表达式。检查条件如下,

  1. 年年 >= 1970

  2. dd && MM >= 01(两位数,不是一位数)。

4

3 回答 3

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)$

正则表达式可视化

在 Debuggex 上查看

于 2013-08-06T18:30:19.827 回答
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

于 2013-08-06T18:24:16.073 回答
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 的部分,并没有验证您之前的工作正则表达式。

于 2013-08-06T18:17:49.157 回答