我有这两个字符串:
“2013-01-28 12:10:01.680000”。
“2013-01-28 12:10:01”。
我想要一个正则表达式,对于以xxxx-xx-xx xx:xx:xx
开头的所有字符串都会返回true,当x是数字时,无论后缀是什么(点和后面的值)。
现在我用:
final String ACCEPTED_FORMAT = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}.\\d{6}";
但我不想检查字符串中的点之后的值。
答案 0 :(得分: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"
这样的废话有什么用呢?)< / p>
答案 1 :(得分:2)
我认为你的正则表达式必须是
\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d{6})?
编辑: - @Stephen C- Dot角色也必须被转义。 (Dot会匹配任何角色)