用于各种日期格式的正则表达式iOS

用于各种日期格式的正则表达式iOS,ios,regex,date,nsregularexpression,Ios,Regex,Date,Nsregularexpression,我正在绞尽脑汁寻找一些正则表达式来匹配一些日期格式。理想情况下,我希望有一个表达式也能匹配每个日期格式,我正在搜索一封电子邮件,查找正文中包含的所有日期 格式,例如: Wednesday, 6 November 2013 Weds 6th November 2013 Weds 6th Nov 2013 06/11/2013 11/06/2013 06/11/13 11/06/13 6th Nov 2013 6th November 2013 有人知道我可以使用的多功能一体式表达式吗?考虑使

我正在绞尽脑汁寻找一些正则表达式来匹配一些日期格式。理想情况下,我希望有一个表达式也能匹配每个日期格式,我正在搜索一封电子邮件,查找正文中包含的所有日期

格式,例如:

Wednesday, 6 November 2013
Weds 6th November 2013
Weds 6th Nov 2013

06/11/2013
11/06/2013
06/11/13
11/06/13

6th Nov 2013
6th November 2013

有人知道我可以使用的多功能一体式表达式吗?

考虑使用
NSDataDetector
,它可以配置为扫描日期(
NSTextCheckingTypeDate
)。Docs.

多亏了Wain的回答,我正在使用此代码而不是NSRegularExpression来查找字符串中的日期,希望它可以帮助任何有类似问题的人

NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeDate error:&error];

NSArray *matches = [detector matchesInString:string
                                     options:0
                                       range:NSMakeRange(0, [string length])];

for (NSTextCheckingResult *match in matches) {

    if ([match resultType] == NSTextCheckingTypeDate) {

        NSDate *date = [match date];

        NSDateFormatter *formatter;
        NSString        *dateString;

        formatter = [[NSDateFormatter alloc] init];
        [formatter setDateFormat:@"dd-MM-yyyy HH:mm"];

        dateString = [formatter stringFromDate:date];
        NSLog(@"Date: %@",dateString);

    }}

可以使用多个字符串编写正则表达式
还可以在中测试正则表达式 它不同,因为您在表达式中删除了\例如 (\d{2})([./-])(\d{2})([./-])(\d{2,4})


改善尼尔·福克纳的反应

如果您希望获取本地化格式的日期:

NSError *error = nil;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeDate error:&error];

NSArray *matches = [detector matchesInString:value
                                     options:0
                                       range:NSMakeRange(0, [value length])];

for (NSTextCheckingResult *match in matches)
{

    if ([match resultType] == NSTextCheckingTypeDate)
    {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        formatter.locale = [NSLocale currentLocale];
        formatter.dateStyle = NSDateFormatterShortStyle;
        response = [formatter stringFromDate:[match date]];
    }
}

可能重复:。谢谢neil!这对我来说也是一个完美的解决方案
NSError *error = nil;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:(NSTextCheckingTypes)NSTextCheckingTypeDate error:&error];

NSArray *matches = [detector matchesInString:value
                                     options:0
                                       range:NSMakeRange(0, [value length])];

for (NSTextCheckingResult *match in matches)
{

    if ([match resultType] == NSTextCheckingTypeDate)
    {
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        formatter.locale = [NSLocale currentLocale];
        formatter.dateStyle = NSDateFormatterShortStyle;
        response = [formatter stringFromDate:[match date]];
    }
}