我对正则表达式很糟糕,我似乎无法完成这个简单的任务。
我需要解析出字符串中的两个日期,该字符串始终具有以下两种格式之一:
“2013 年 12 月 29 日至 2014 年 1 月 3 日在您的物业询价”
或者
“2013 年 12 月 29 日至 2014 年 1 月 3 日在您的物业询价”
2 种不同的日期格式让我失望。任何见解将不胜感激!
我对正则表达式很糟糕,我似乎无法完成这个简单的任务。
我需要解析出字符串中的两个日期,该字符串始终具有以下两种格式之一:
“2013 年 12 月 29 日至 2014 年 1 月 3 日在您的物业询价”
或者
“2013 年 12 月 29 日至 2014 年 1 月 3 日在您的物业询价”
2 种不同的日期格式让我失望。任何见解将不胜感激!
/(\d+ \w+, \d+|\w+ \d+, \d+)/
例如。在Rubular上尝试一下。
当然,它会拾取更多的东西,比如2013 NotReallyAMonth, 12345
. 但是,如果您在输入中没有看起来像日期但实际上不是日期的东西,这可能会起作用。
您可以使正则表达式更强大,但对匹配的内容施加更多限制:
/(\d{2} (?:January|December), \d{4}|(?:January|December) \d{2}, \d{4})/
在这种情况下,日期始终为两位数,年份为 4。明确列出了月份(您必须列出所有月份)。
更新:对于范围,它将是一个不同的正则表达式:
/((?:Jan|Dec) \d+ - \d+, \d{4})/
显然它们都可以组合在一起:
/(\d{2} (?:January|December), \d{4}|(?:January|December) \d{2}, \d{4}|(?:Jan|Dec) \d+ - \d+, \d{4})/