【发布时间】:2014-08-20 03:19:08
【问题描述】:
您好,我正在尝试编写一个正则表达式,该表达式将通过此标准匹配字符串中的所有月份名称:
- 如果字符串只包含月份名称而不是有效的
- 如果字符串包含月份名称并以年份开头/结尾,则年份必须是当前年份,但还必须与上一年的 12 月和明年的 1 月匹配
通过示例:
六月 - 有效 2014 年 6 月 - 有效 2014 年 6 月 - 有效 2013 年 6 月 - 无效 2015 年 6 月 - 无效 十二月 - 有效 2013 年 12 月 - 有效 2015 年 12 月 - 无效 一月 - 有效 2015 年 1 月 - 有效 2013 年 1 月 - 无效我使用以下正则表达式:
^(?:2014\s*|2015\s*(january)|2014\s*(december)|)(january|february|march|april|may|june|july|august|september|october|november|december|)(?:\s*2014|(december)\s*?2013|(january)\s*?2015|)?$
但是当我尝试 2015 年 1 月
时它给了我“”array(6) {
[0]=>
string(11) "january 2015"
[1]=>
string(0) ""
[2]=>
string(0) ""
[3]=>
string(0) ""
[4]=>
string(0) ""
[5]=>
string(6) "january"
}
或者如果我尝试 2015 年 1 月
array(4) {
[0]=>
string(11) "2015 january"
[1]=>
string(6) "january"
[2]=>
string(0) ""
[3]=>
string(0) ""
}
所以我必须忽略所有空值并找到正确的值
你们能帮忙吗?
【问题讨论】:
-
也许这是个坏建议,但我会考虑使用strtotime 来获取时间戳。