Возможный дубликат:
Полное регулярное выражение для проверки номера телефона
Как проверить номер телефона (NSString *) в objective-c? Правила:
- минимум 7 цифр
- максимум 10 цифр
- первая цифра должна быть 2, 3, 5, 6, 8 или 9
Спасибо
Возможный дубликат:
Полное регулярное выражение для проверки номера телефона
Как проверить номер телефона (NSString *) в objective-c? Правила:
Спасибо
Вы можете использовать библиотеку регулярных выражений (например, RegexKit и т.д.), или вы можете использовать регулярные выражения через NSPredicate
(немного более неясные, но не требующие сторонних библиотек). Это будет выглядеть примерно так:
NSString *phoneNumber = ...;
NSString *phoneRegex = @"[235689][0-9]{6}([0-9]{3})?";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
BOOL matches = [test evaluateWithObject:phoneNumber];
Если вы на iPhone, iOS 4 представил NSRegularExpression
, который также будет работать. Подход NSPredicate
работает как на Mac, так и на iPhone (любая версия).
Пожалуйста, не используйте свое собственное регулярное выражение для номера телефона. Не.
Формат телефонных номеров изменяется по всей стране, и ваше приложение может быть использовано за пределами вашей собственной страны.
Вместо этого используйте то, что Apple предоставляет, как говорит Джош. См. здесь.
Для тех, кто ищет извлечение телефона, вы можете извлечь телефонные номера из текста, например:
NSString *userBody = @"This is a text with 30612312232 my phone";
if (userBody != nil) {
NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];
NSArray *matches = [detector matchesInString:userBody options:0 range:NSMakeRange(0, [userBody length])];
if (matches != nil) {
for (NSTextCheckingResult *match in matches) {
if ([match resultType] == NSTextCheckingTypePhoneNumber) {
DbgLog(@"Found phone number %@", [match phoneNumber]);
}
}
}
}
`
Класс NSDataDetector
, доступный в iOS 4.0 и новее, является специализированным подклассом NSRegularExpression
, который имеет явную поддержку для обнаружения телефона числа.
В iOS 4.0+ для этого встроены классы, NSRegularExpression
Во всем остальном вы можете либо использовать стороннюю библиотеку RegEx, либо использовать NSPredicate, если ваши потребности достаточно узкие