我正在尝试创建仅匹配有效日期的正则表达式(MM/DD
或MM/DD/YY(YY)
格式)
我当前的正则表达式(\d+)/(\d+)/?(\d+)?
非常简单,但它匹配任何前/后/
的数字。即如果字符串为2015/2016 12/25
,则会将这两个字符串视为匹配,但我只想要12/25
部分。
Here是一些示例RegEx的链接。
答案 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})?
- 尾随字边界