Регулярное выражение для проверки универсального идентификатора типа
Унифицированные идентификаторы типов (UTI) - это современный метод определения типов файлов в Mac OS X. В документации Apple говорится:
UTI определяется как строка (CFString), которая соответствует соглашению об обратной системе доменных имен (DNS).
Однако связанные с UTI функции в LaunchServices не предоставляют какого-либо метода для проверки UTI, то есть проверки, является ли данная строка UTI и соответствует ли формат строки UTI (т.е. использует только допустимые символы и т. Д.).
На странице Википедии об ИМП написано:
UTI используют структуру именования с обратным DNS. Имена могут включать символы ASCII AZ, az, 0-9, дефис ("-") и точку ("."), А также все символы Unicode выше U+007F.[1] Двоеточия и косые черты запрещены для совместимости с соглашениями о путях к файлам Macintosh и POSIX.
Как будет выглядеть регулярное выражение для проверки UTI?
1 ответ
Посредством дальнейшего поиска я нашел это на странице Википедии обратного доменного имени:
^[A-Za-z]{2,6}((?!-)\\.[A-Za-z0-9-]{1,63}(?<!-))+$
Придумал следующую функцию для проверки строки NSString, содержащей UTI:
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];
}