我有包含以下示例值的日期列
- 发布于2010 年 6 月 25 日下午 1:01
- 2011 年 3 月 14 日
- 2011 年 4 月 15 日,星期五 12:15 am
- 2011 年 3 月 31 日,星期四,下午 1:11
- 更新时间:2011 年 6 月 3 日,星期五上午 9:34。
我想在给定的字符串中提取日期(以粗体显示)。我可以得到一个正则表达式来检测这个用单词指定的日期吗?
谢谢!!
最佳答案
我想这取决于您对表达式的要求有多严格。这个将适用于您的所有示例:
/(一月|二月|三月|四月|五月|六月?|七月|八月|九月|十月|十一月|十二月)\s(\d\d?).+?(\d\d\d\d)/
但是没有执行 st、nd、rd、th 规则。
也没有强制执行分隔日期和年份的逗号。
还有一个缩短的 June 的特殊情况(对于您的示例 5,June 有一个可选的 e
),但没有考虑其他缩短的月份名称。
Firebug 的示例输出:
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s1)
["June 25, 2010", "June", "25", "2010"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s2)
["March 14, 2011", "March", "14", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s3)
["April 15, 2011", "April", "15", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s4)
["March 31st, 2011", "March", "31", "2011"]
>>> /(January|February|March|April|May|June?|July|August|September|October|November|December)\s(\d\d?).+?(\d\d\d\d)/.exec(s5)
["Jun 3, 2011", "Jun", "3", "2011"]
关于java - 正则表达式从Java中的字符串中提取word中指定的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7380275/