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

时间:2017-01-26 19:03:00

标签: regex date regex-lookarounds

我希望看到一个与以下日期格式匹配的正则表达式。

1/2017
01/2017
12/2017

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

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

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

谢谢,

3 个答案:

答案 0 :(得分:3)

通过在正则表达式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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

这个正则表达式:

 resolve: {
      alias: {
        // NOTE: You should set 'highcharts/highcharts.src.js'
        // if you are not going to use <chart type="StockChart"
        highcharts$: "highcharts/highstock.src.js"
      },

将匹配:

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

但不会匹配:

1/2017
01/2017
12/2017

修饰符12/1/2017 13/2017 111/2017 /2017 用于全局。

修饰符g用于多行,这使得使用^和$来分隔开始和结束。

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