我在日期时间上有一点问题
四月 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 space
, space
2014
那么这个正则表达式是不安全的:
[a-zA-Z]+ d{2}, d{1,4}
它随心所欲地匹配,但安全?不,因为一个space
为此打破了规则。
这对您来说是一个安全的正则表达式:
w+s+d+,s+d+
您仍然可以通过包围^
和$
使其更安全,对您来说最安全的正则表达式是:
^w+s+d+,s+d+$
证明