用于各种日期格式的正则表达式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]];
}
}