2013-10-23 53 views
0

我用正则表达式和我似乎无法包裹我的头围绕这个简单的任务。解析日期从字符串 - 正则表达式

我需要在其中总是有两种格式之一的字符串解析出两个日期:

“询问你的财产为2013年12月29日 - 2014年1月3日”

OR

“2013年12月29日至2014年1月3日期间,您的物业查询”

2种不同的日期格式将我抛弃。任何见解将不胜感激!例如

回答

1

/(\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})/ 

显然,他们都可以combined together

/(\d{2} (?:January|December), \d{4}|(?:January|December) \d{2}, \d{4}|(?:Jan|Dec) \d+ - \d+, \d{4})/ 
+0

你并不真正需要的群体,你的方式”已经写了第一个。 – FrankieTheKneeMan

+0

我假设OP想要提取日期,然后组需要。 – detunized

+0

不是第一个,第一个只会在交替之前匹配所有的东西,或者它之后的所有东西,这使得分组变得冗余。 – FrankieTheKneeMan