首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >各种日期格式的正则表达式iOS

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

Stack Overflow用户
提问于 2013-07-06 20:59:46
回答 4查看 2K关注 0票数 2

我正在努力理解一些正则表达式,以匹配一些日期格式。理想情况下,我希望一个表达式,以匹配每个日期格式可能,我正在搜索的所有电子邮件中的所有日期与主体。

格式,例如:

代码语言:javascript
复制
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

有没有人知道我能用到的all in one表达式?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-06 22:15:57

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

代码语言:javascript
复制
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);
   
    }
}
票数 5
EN

Stack Overflow用户

发布于 2013-07-06 21:17:04

考虑使用可配置为扫描日期(NSTextCheckingTypeDate)的NSDataDetector。Docs here

票数 3
EN

Stack Overflow用户

发布于 2015-05-07 15:38:58

你可以用几个字符串编写正则表达式

此外,您还可以在http://regexpal.com中测试正则表达式,这与在表达式中删除\有所不同,例如(\d{2})(./-)(\d{2})(./-)(\d{2,4})

代码语言:javascript
复制
NSError *error = NULL;  
    NSString *expForSlash = @"(\\d{2})((\/)|(\.))(\\d{2})((\/)|(\.))(\\d{4}|\\d{2})";



NSString *expMonthStrNew = @"(Jan|Feb|Mar(ch)?|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(\\s?)(\\d{2}|\\d{1})(\,?)(\\s?)(\\d{4}|\\d{2})";
NSString *expForreg  = [NSString stringWithFormat:@"%@|%@", expForSlash, expMonthStrNew];//@"(May|Jun)(\\s?)(\\d{2})(\,?)(\\s?)(\\d{4})";

NSRegularExpression *regex = [NSRegularExpression
                              regularExpressionWithPattern:expForreg
                              options:NSRegularExpressionCaseInsensitive
                              error:&error];



NSArray *matches = [regex matchesInString:tesText options:0 range:NSMakeRange(0, [tesText length])];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17503215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档