^ ((/ d {2} (([02468] [048]))) [(((((((((((0? [13578]) | (1 [ 02]) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (3 [01]))) | (((0 ? [469]) | (11)) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (30))) | ? 0 2 [/ - /// s] ((0 [1-9]) | ([1-2] [0-9])?)))) | (/ d {2} (([02468? [1235679]) ([13579]) [(((((((0? [13578]) | (1 [02])) [/ - /// s] ((0? [1-9]) | ([1-2] [0-9]) | (((((((0? [469]) | (11)) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (30))) | (0? 2 [/ - /// s]? ((0 [1-9]) |? (1 [0-9]) | (2 [0-8])))))) (/ s (((0 [0-9]) |? ([ 1-2] [0-3])) /: ([0-5]? [0-9]) ((/ s) | (/: ([0-5]? [0-9])))))) )))? $
C # code test:
Public class class1 {static void main (string [] args) {// String regex = @ "((/ d {2} (([02468] [048]) | ([13579] [26])) [/ - /// s]? (((0? [13578]) | (1 [02])) [/ - /// s]? ((0? [1-9]) | ([1-2 ] [0-9]) | (((0? [469]) | (11)) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (30)))) | (0? 2 [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]))))))))))) | (/ d {2} (([02468] [1235679]) | ([13579])) [/ - /// s]? ((((((((0) ? [13578]) | (1 [02])) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (3 [01 ])) | (((0? [469]) | (11))) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9] ) | (30))) | (0? 2 [/ - / // s]? ((0? [1-9]) | (1 [0-9]) | (2 [0-8]))) )))))) (/ s ((((0? [0-9]) | ([1-2] [0-3])) /: ([0-5]? [0-9]) ((/ s) | (/: ([0-5]? [0-9])))))))))))))))))) $ "; string regex = @" ^ ((/ d {2} ((([02468] [048]) | ([13579]) [((((0? [13578]) | (1 [02])) [/ - /// s]? ((0? [ 1-9]) | ([1-2] [0-9]) | ((((((0? [469]) | (11)) [/ - /// s] ((0? [1-9]) | ([1-2] [0-9]) | (30))) | (0? 2 [/ - /// s]? ((0? [1 -9]))))))))))))))))))))))))))))))))))))))))))))))))))))))) | (/ d {2} (([02468] [1235679]) | ([13579]) [/ - /// s]? (((1 [02])) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (((0? [469]) | (11)) [/ - /// s]? ((0? [1-9]) | ([1-2] [0-9]) | (30))) | (0? 2 [/ - // / s]? ((0? [1-9]) | (1 [0-9])))))) "; // Date part regex = @" (/ S (((0? [0-9]) | ([1-2] [0-3])) /: ([0-5]? [0-9]) ((/ s) | (/: ([0-5]? [0-9])))))))))))) $ "; // Time section System.text.RegularExpressions.RegexOptions Options = ((System.Text.RegularExpressions.RegexOptions.ignorePatternwhitespace | System.Text. RegularExpressions.RegexOptions.Multiline) | System.Text.RegularExpressions.RegexOptions.IgnoreCase); System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex (regex, options);
String s = "2003-02-29 23:59:59"; System.Console.out.writeline (s "{0}", reg.ismatch (s)); s = "2004-02-29 23: 59:59 "; System.Console.out.writeline (s " {0} ", reg.ismatch (s)); s =" 2004-04-30 0:59:59 "; system.console.out. WriteLine (s "{0}", reg.ismatch (s)); s = "2004-04-30 01: 11: 0"; System.Console.out.writeline (s "{0}", REG .Ismatch (s));
s = "2004-04-30 0: 0: 0"; System.Console.out.writeline (s "{0}", reg.ismatch (s));
S = "2004-04-30 00:00:00"; System.Console.out.writeline (s "{0}", reg.ismatch (s));}}
// Java Code Test
Import java.util.regex. *; class class1 {public static void main (string [] args) {pattern p = pattern.Compile ("^ (((((// d {2}) ([13579]? ((((((0? [13578]) | (1 [02])) [// - / s]? ((0? [1- 9] | ([1-2] [0-9]) | (((((0? [469]) | (11)) [// / s]? (( 0? [1-9]) | ([1-2] [0-9]) | (30))) | (0? 2 [// - / s]? ((0? [1-9]) ([1-2] [0-9]))))))) | (// d {2} (([02468] [1235679]) | ([13579]) [// - / s ]? ((((((((0? [13578]) | (1 [02])) [/ / - / s]? ((0? [1-9]) | ([1-2] [0-9] ) | (3 [01]))) | ((0? [469]) | (11)) [// / s]? ((0? [1-9]) | ([1-2] [0-9]) | (30))) | (0? 2 [// - / s]? ((0? [1-9]) | (1 [0-9]) | (2 [0- 8])))))))))) (// s (((((0? [0-9]) | ([1-2] [0-3]))) //: ([0-5]? [0- 9]) (// s) | (//: ([0-5]? [0-9])))))))))))))))))
String s = "2003-02-29 23:59:59"; System.out.Println (S " P.matcher (s) .matches ());
S = "2004-02-29 23:59:59"; System.out.Println (S " P.matcher (s) .matches ());
S = "2004-04-31 0:59:59"; System.out.Println (S " P.Matcher (s) .matches ());
s = "2004-04-30 01: 11: 0"; System.out.Println (S " P.matcher (s) .matches ()); s =" 2004-04-30 0: 0: 0 "; System.out.Println (S " P.matcher (s) .matches ());
S = "2004-04-30 00:00:59"; System.out.Println (S " P.matcher (s) .matches ());}}