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



我在日期时间上有一点问题

四月 15, 2014

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

问题是当我在日期之前有文本时,例如:

文本

文本 2014 年 4 月 15 日文本

好吧,在这种情况下,我的正则表达式还会选择文本,而不仅仅是日期。所以我需要稍微修改一下我的正则表达式以严格找到我的日期,而不是之前或之后的文本。

谁能帮我?

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

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

查看正则表达式演示

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

请注意:d{1,4}匹配 1 到 4 位数字。如果您计划匹配 4 位数的年份,请使用 d{4} 。如果您打算匹配 2 位或 4 位数字的年份,请使用 (d{4}|d{2}) ,但这次您确实需要单词边界或锚点。

对于您的情况,您应该小心,因为您的约会可能是这样的:
四月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+$

证明

最新更新