正则表达式匹配JAVA中的特定日期格式

时间:2015-04-02 16:04:56

标签: java regex

我想确保日期是以下格式之一:

DD.MM.YYYY
DD-MM-YYYY
DD/MM/YYYY

我的正则表达式看起来像这样:

"^[0-9]{2}['/''-''.'][0-9]{2}['/''-''.'][1-9][0-9]${3}"

我认为上面的代码说:

  1. - 通过查看数字0-9(两次这样做)开始
  2. - 后跟'/''-''.'
  3. - 后来0-9两次。
  4. - 后跟'/''-''.'(再次)
  5. 以1开头的一年(4个数字)结束
  6. 但它返回false例如16-10-1990

    我对正则表达式很陌生,所以对此有任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:3)

这是正确的表达方式。我从字符类中删除了单引号,转义了短划线并移动了" $"最后。

^[0-9]{2}[/\-.][0-9]{2}[/\-.][1-9][0-9]{3}$

要确保在两个空格中将相同的字符用作分隔符,您可以执行三个OR-ed表达式:

^([0-9]{2}\.[0-9]{2}\.[1-9][0-9]{3}|[0-9]{2}-[0-9]{2}-[1-9][0-9]{3}|[0-9]{2}/[0-9]{2}/[1-9][0-9]{3})$

...或者在' /',' - '上进行字符串替换。和'。'在对表达式进行测试之前,它们是一致的(例如将它们全部转换为破折号)。

答案 1 :(得分:2)

这应该有效

^[0-9]{2}[-./][0-9]{2}[-./]1[0-9]{3}$

^字符串的开头
2位数 - 要么 。或/
2位数 - 要么 。或/
1
3位数 $ end of string