正则表达式在特定符号之前的一个月和一天

时间:2018-02-21 02:06:53

标签: regex

我正试图通过以下字符串获取日期和月份:

5月2日4月22日12月2日

但是我无法弄清楚正确的正则表达式:

我已经尝试了\d{1,2}[^月]\d{1,2}[^日]但是如果当天或月份有两位数,这只会返回一些内容。

我缺少什么想法?

感谢。

2 个答案:

答案 0 :(得分:1)

\d{1,2}匹配1个数字,[^月]匹配另一个数字。您当前的正则表达式将匹配两位数字,然后匹配除

之外的任何字符

确保遵循的正确方法是使用前瞻性\d{1,2}(?=月),如使用中所见here

答案 1 :(得分:0)

假设您每年有12个月,每月最多31天这会让您关闭,在您确定语法正确后,您仍需要进行边界检查; (阅读;月19日37日将是有效的语法)

1?\d月[123]?\d日

编辑:这是一个更好的正则表达式,不需要检查边界,也不需要前瞻;

^(1[012]|[1-9])月(3[01]|[12]\d|[1-9])日$