1

统一类型标识符 (UTI) 是在 Mac OS X 上识别文件类型的现代方法。在 Apple 的文档中它说:

UTI 定义为遵循反向域名系统 (DNS) 约定的字符串 (CFString)。

但是,LaunchServices 中与UTI 相关的函数没有提供任何验证UTI 的方法,即检查给定字符串是否为UTI 并符合UTI 字符串格式(即仅使用合法字符等)。

UTI 的维基百科页面说:

UTI 使用反向 DNS 命名结构。名称可能包括 ASCII 字符 AZ、az、0-9、连字符(“-”)和句点(“.”),以及 U+007F 以上的所有 Unicode 字符。 [1] 为了与 Macintosh 和 POSIX 文件路径约定兼容,禁止使用冒号和斜杠。

验证 UTI 的正则表达式是什么样的?

4

1 回答 1

1

通过一些进一步的搜索,我在反向域名符号维基百科页面上找到了这个:

^[A-Za-z]{2,6}((?!-)\\.[A-Za-z0-9-]{1,63}(?<!-))+$

编写了以下函数来验证包含 UTI 的 NSString:

BOOL UTTypeIsValid(NSString *inUTI) {
    NSString *reverseDNSRegEx = @"^[A-Za-z]{2,6}((?!-)\\.[A-Za-z0-9-]{1,63}(?<!-))+$";
    NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", reverseDNSRegEx];
    return [test evaluateWithObject:inUTI];
}
于 2015-12-12T15:43:44.237 回答