1

我有这两个字符串:

  1. “2013-01-28 12:10:01.680000”。

  2. “2013-01-28 12:10:01”。

我想要一个正则表达式,它将对所有以: 开头的字符串返回 true xxxx-xx-xx xx:xx:xx,当 x 是一个数字时,无论后缀是什么(从该点开始的值)。

现在我使用:

final String ACCEPTED_FORMAT = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{6}";

但我不想检查字符串中点之后的值。

4

2 回答 2

2

这应该做我认为的工作:

final String ACCEPTED_FORMAT = 
        "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d{6})?";

它使'。后面的 6 位数字是可选的。


但是,这不是验证日期的好方法,因为它允许各种胡说八道,包括不存在的月份、月底之后的日子等等。有适当的日期解析器......如果你想正确验证日期,你应该使用一个。

(而且我发现很难想象为什么您不想正确验证日期。允许用户输入废话的实用程序是什么"2011-02-32 99:99:99"?)

于 2013-02-07T08:30:56.187 回答
2

我认为你的正则表达式必须是

\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d{6})?

编辑:-@Stephen C-点字符也必须转义。(点将匹配任何字符)

于 2013-02-07T08:34:57.700 回答