Этот вопрос задается так много раз на SO, но у меня проблема с выражением, и он не работает для меня.Регулярное выражение для номера телефона США не работает
Мне нужно разрешить только номера, (,), - в телефонном номере, и для этого у меня есть код следующим образом. Но работает только раскованное выражение, и только для чисел no (,), - разрешено, и я искал и получал другие выражения, которые должны разрешать (,), но они тоже не работают.
Что может быть неправильным? Пример: 9876545678, (123) 123-7657
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string isEqualToString:@""]) {
return TRUE;
}
if(textField == aTfdPhone)
{
if ([string isEqualToString:@"."]) {
return NO;
}
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^([0-9]+)?(\\.([0-9])?)?$";
// NSString *expression = @"^[(]?[2-9][0-9]{2}[)]?[ -]?[0-9]{3}[ -]?[0-9]{4}$";
// NSString * const expression = @"^([+-]{1})([0-9]{3})$";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error) {
NSLog(@"error %@", error);
}
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
options:0
range:NSMakeRange(0, [newString length])];
if (numberOfMatches == 0){
return NO;
}
}
return TRUE;
}
Возможный дубликат [Полноценное регулярное выражение для проверки номера телефона] (http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) –
Check this out - http://snipplr.com/view/7622/ – rishi
Ни одна из ваших попыток не соответствует вашим заявленным требованиям. Первый закомментированный номер ограничивает разрешенные номера и имеет очень конкретные и жесткие требования к группировке, но в остальном выглядит близко к тому, что вы говорите, что хотите. Но особенно если регулярные выражения вам совершенно чужды, вы должны рассмотреть другой подход. Общее предложение состоит в том, чтобы обрезать все пробелы и пунктуацию, а затем проверить, что у вас есть только числа и достаточно длинная последовательность. – tripleee