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. yyyy >= 1970

  2. dd && MM >= 01 (1 桁ではなく 2 桁)。

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 に答える