Java 日期格式验证

Java 日期格式验证,java,regex,validation,datetime-format,Java,Regex,Validation,Datetime Format,我有以下方法来检查我的日期格式验证 public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX"); String dateString = df.format(new Date()); Validator validator = new Validator(); System.out.pri

我有以下方法来检查我的日期格式验证

public static void main(String[] args) {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXX");
    String dateString = df.format(new Date());
    Validator validator = new Validator();
    System.out.println(dateString+" = "+validator.isTimesStampValid(dateString));
    String given = "2016­-09-­28T14:50:31.456449+06:00";
    System.out.println(given+" = "+validator.isTimesStampValid(given));
}
我得到的结果如下:

2016-11-21T12:18:18.000698+05:30 = false
2016-­09­-28T14:50:31.456449+06:00 = true
我的日期格式验证正则表达式是这样的,
^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)(\+\124;-\ d{2}:\d{2}$

我不明白为什么我在验证后得到两个不同的结果。
根据我的理解,对于给定的
日期字符串的值,我应该得到相同的结果。请解释一下我为什么会得到这个…

我只想提一下,你的正则表达式:

^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(\+|-)\d{2}:\d{2}$

根据,匹配了提供的两个示例字符串和我生成的其他几个字符串。

我希望这两个字符串都返回
false
,因为您的正则表达式缺少日期部分之间的
-
。---那么
(\+\124;…)
应该匹配什么?是
+
还是什么都没有?但是如果时区是
-03:00
?啊,你的正则表达式似乎有“软连字符”(U+00AD),而不是正常的
-
减号。哎呀!!投票以打字错误结束。+安德烈亚斯。请尝试使用:\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(\.\d+)(\+\124; \-)\ d{2}:\d{2}@Andreas,很抱歉,我在这里粘贴正则表达式时错过了它,现在我已经更新了它。另外,我不能更改正则表达式,因为它是提供的。@Andreas,非常感谢你,我没有注意到连字符的东西没有。。