匹配 MM/YYYY 或 m/YYYYY 的正则表达式

Regular Expression to match MM/YYYY or m/YYYYY

我想查看匹配以下日期格式的正则表达式。

1/2017
01/2017
12/2017

这是我目前拥有的,但它只匹配最后两个。我错过了什么?

((0[1-9])|(1[0-2]))\/(\d{4})

如果格式为 12/1/2017(MM/dd/yyyy 或 dd/MM/yyyy),我也不希望它完全匹配

谢谢,

((0?[1-9])|(1[0-2]))\/(\d{4})。第一个输入没有 0。添加 + 将匹配零次或一次出现的 0

通过在正则表达式中的 0 旁边添加 ? 使 0 可选。

((0?[1-9])|(1[0-2]))\/(\d{4})

Regex101 demo

编辑:\b (边框)包围上面的正则表达式,所以它 匹配 5/21/2017完全没有。

\b((0?[1-9])|(1[0-2]))\/(\d{4})\b

Updated Regex101 demo

编辑 2: 根据 Glenn 的评论更新正则表达式:

(?:^|[^\/\d])\K(?:0?[1-9]|1[0-2])\/\d{4}\b

Updated Regex101 demo

这个正则表达式:

/^((0?[1-9]|1[0-2])\/\d{4})$/gm

将匹配:

1/2017
01/2017
12/2017

但不会匹配:

12/1/2017
13/2017
111/2017
/2017

修饰符g用于全局。

修饰符 m 用于 multi-line,这使得使用 ^ 和 $ 来分隔开始和结束成为可能。

https://regex101.com/r/ompmyK/3