仅限有效日期的正则表达式匹配

时间:2015-12-02 14:39:02

标签: regex date

我正在尝试创建仅匹配有效日期的正则表达式(MM/DDMM/DD/YY(YY)格式)

我当前的正则表达式(\d+)/(\d+)/?(\d+)?非常简单,但它匹配任何前/后/的数字。即如果字符串为2015/2016 12/25,则会将这两个字符串视为匹配,但我只想要12/25部分。

Here是一些示例RegEx的链接。

1 个答案:

答案 0 :(得分:1)

您可以添加单词边界(\b)以确保将日期字符串作为整个“单词”匹配(以便匹配不会从数字中间开始)并限制出现次数{{ 1}}在限制量词的帮助下匹配:

\d

请参阅regex demo

正则表达式分解:

  • \b(\d{2})/(\d{1,2})/?(\d{4}|\d{2})?\b - 字边界,以确保在数字之前有一个非单词字符或字符串的开头
  • \b - 正好匹配2位数
  • (\d{2}) - 匹配文字/
  • / - 匹配并捕获1到2位数字
  • (\d{1,2}) - 匹配1或0 /?
  • / - 匹配1或0次出现的4位或2位
  • (\d{4}|\d{2})? - 尾随字边界