使用正则表达式匹配模式

时间:2013-02-07 08:28:14

标签: java regex

我有这两个字符串:

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

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

  3. 我想要一个正则表达式,对于以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}";

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

2 个答案:

答案 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会匹配任何角色)