我在日期时间有点问题
2014年4月15日
我写了这个正则表达式:\ D + [a-z] \ d {2},\ d {1,4}
问题是我在日期之前有文字,例如:
文字文字2014年4月15日文字
嗯,在这种情况下,我的正则表达式也会选择文本,而不仅仅是日期。所以我需要修改一点我的正则表达式来严格查找我的日期,而不是之前或之后的文本。
任何人都可以帮助我吗?
答案 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 强> space
,space
的 2014 强>
然后这个正则表达式是不安全的:
[a-zA-Z]+ \d{2}, \d{1,4}
它符合您的要求,但安全?否,因为单 space
违反规则。
这对你来说是一个安全的正则表达式:
\w+\s+\d+,\s+\d+
您仍然可以通过^
和$
包围来更安全,最安全的正则表达式是:
^\w+\s+\d+,\s+\d+$