正则表达式:日期完全匹配

时间:2017-02-08 12:00:58

标签: regex date formula

我在日期时间有点问题

2014年4月15日

我写了这个正则表达式:\ D + [a-z] \ d {2},\ d {1,4}

问题是我在日期之前有文字,例如:

文字文字2014年4月15日文字

嗯,在这种情况下,我的正则表达式也会选择文本,而不仅仅是日期。所以我需要修改一点我的正则表达式来严格查找我的日期,而不是之前或之后的文本。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:5)

只需使用[a-zA-Z]+来匹配月份名称:

[a-zA-Z]+ \d{2}, \d{1,4}

请参阅regex demo

另外,如果您需要在较大的字符串中匹配这些字符串,请考虑使用单词边界\b[a-zA-Z]+ \d{2}, \d{1,4}\b,或者如果您需要完整字符串匹配,请考虑使用锚点:{{1 }}

只需注意:^[a-zA-Z]+ \d{2}, \d{1,4}$匹配1到4位数字。如果您计划匹配4位数年份,请使用\d{1,4}。如果您计划匹配2位或4位数年份,请使用\d{4},但这次您确实需要字边界或锚点。

答案 1 :(得分:1)

对于您的情况,您应该小心,因为您的日期可能是这样的:
四月 a lot of space 15 spacespace 2014
然后这个正则表达式是不安全的:
[a-zA-Z]+ \d{2}, \d{1,4}它符合您的要求,但安全?否,因为 space违反规则。

这对你来说是一个安全的正则表达式:
\w+\s+\d+,\s+\d+

您仍然可以通过^$包围来更安全,最安全的正则表达式是: ^\w+\s+\d+,\s+\d+$

prove