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,非常感谢你,我没有注意到连字符的东西没有。。