import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(\\d{4}(-?\\d\\d){2})[tT]?((\\d\\d:?){1,2}(\\d\\d)?(.\\d{3})?([zZ]|[+-](\\d\\d):?(\\d\\d)))?$";
final String string = "2017-06-12T10:10:15.770Z\n"
+ "2017-06-12T10:10:15Z\n"
+ "2017-06-12T10:10Z\n"
+ "2017-06-12T101015.770Z\n"
+ "2017-06-12T101015Z\n"
+ "2017-06-12T1010Z\n"
+ "20170612T10:10:15.770Z\n"
+ "20170612T10:10:15Z\n"
+ "20170612T10:10Z\n"
+ "20170612T101015.770Z\n"
+ "20170612T101015Z\n"
+ "20170612T1010Z\n"
+ "20170612T10Z\n"
+ "2017-06-12\n"
+ "2017-06-12T\n"
+ "1994-11-05T08:15:30-05:00\n"
+ "2017-06-12T09:37:45+00:00\n"
+ "2017-06-12T09:37:45Z\n"
+ "20170612T093745Z\n\n"
+ "2017-06-12Z\n"
+ "2017-06-12TZ\n"
+ "2017-06-12T101015770Z\n"
+ "2017-06-12T009:307:405Z\n"
+ "2017-06-12T09.37.45Z\n"
+ "2017-0612T10:10:15.770Z\n"
+ "2017-0612T10:10:15Z\n"
+ "2017-0612T10:10Z\n"
+ "2017-0612T101015.770Z\n"
+ "2017-0612T101015Z\n"
+ "2017-0612T1010Z\n"
+ "2017-0612T10Z\n"
+ "201706-12T10:10:15.770Z\n"
+ "201706-12T10:10:15Z\n"
+ "201706-12T10:10Z\n"
+ "201706-12T101015.770Z\n"
+ "201706-12T101015Z\n"
+ "201706-12T1010Z\n"
+ "201706-12T10Z\n\n"
+ "MATCH\n\n"
+ "2009-12T12:34\n"
+ "2009\n"
+ "2009-05-19\n"
+ "2009-05-19\n"
+ "20090519\n"
+ "2009123\n"
+ "2009-05\n"
+ "2009-123\n"
+ "2009-222\n"
+ "2009-001\n"
+ "2009-W01-1\n"
+ "2009-W51-1\n"
+ "2009-W511\n"
+ "2009-W33\n"
+ "2009W511\n"
+ "2009-05-19\n"
+ "2009-05-19 00:00\n"
+ "2009-05-19 14\n"
+ "2009-05-19 14:31\n"
+ "2009-05-19 14:39:22\n"
+ "2009-05-19T14:39Z\n"
+ "2009-W21-2\n"
+ "2009-W21-2T01:22\n"
+ "2009-139\n"
+ "2009-05-19 14:39:22-06:00\n"
+ "2009-05-19 14:39:22+0600\n"
+ "2009-05-19 14:39:22-01\n"
+ "20090621T0545Z\n"
+ "2007-04-06T00:00\n"
+ "2007-04-05T24:00\n"
+ "2010-02-18T16:23:48.5\n"
+ "2010-02-18T16:23:48,444\n"
+ "2010-02-18T16:23:48,3-06:00\n"
+ "2010-02-18T16:23.4\n"
+ "2010-02-18T16:23,25\n"
+ "2010-02-18T16:23.33+0600\n"
+ "2010-02-18T16.23334444\n"
+ "2010-02-18T16,2283\n"
+ "2009-05-19 143922.500\n"
+ "2009-05-19 1439,55\n\n"
+ "DONT MATCH\n\n"
+ "200905\n"
+ "2009367\n"
+ "2009-\n"
+ "2007-04-05T24:50\n"
+ "2009-000\n"
+ "2009-M511\n"
+ "2009M511\n"
+ "2009-05-19T14a39r\n"
+ "2009-05-19T14:3924\n"
+ "2009-0519\n"
+ "2009-05-1914:39\n"
+ "2009-05-19 14:\n"
+ "2009-05-19r14:39\n"
+ "2009-05-19 14a39a22\n"
+ "200912-01\n"
+ "2009-05-19 14:39:22+06a00\n"
+ "2009-05-19 146922.500\n"
+ "2010-02-18T16.5:23.35:48\n"
+ "2010-02-18T16:23.35:48\n"
+ "2010-02-18T16:23.35:48.45\n"
+ "2009-05-19 14.5.44\n"
+ "2010-02-18T16:23.33.600\n"
+ "2010-02-18T16,25:23:48,444";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html