ver telefono opcion numero mensajes llamadas ignorar desbloquear contacto como bloquear bloqueados bloqueadas iphone ios regex ipad

iphone - telefono - Validar número de teléfono ios



opcion ignorar contacto iphone (9)

En veloz 4 -

func ValidateMobileNumber(txtFeid : UITextField, strChk : String, range: NSRange) -> Bool { if txtFeid.text!.count >= 10 { return false } let formatePre = "^((//+)|(00))[0-9]{6,14}$" let resultPredicate : NSPredicate = NSPredicate(format: "SELF MATCHES %@",formatePre) return resultPredicate.evaluate(with: strChk) }

Necesito validar un número de teléfono internacional.

Sé que es difícil validar un número de teléfono internacional, así que lo voy a mantener simple:

+ o 00, luego 6-14 números

Mi código actual usando una expresión regular no funciona por alguna razón que no puedo resolver. Simplemente dice que no puede abrir la expresión regular y se bloquea.

Aquí está mi código actual:

NSString *phoneRegex = @"^[/+(00)][0-9]{6,14}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; BOOL phoneValidates = [phoneTest evaluateWithObject:phoneNumber];

¿Dónde estoy equivocado?

¡Gracias!


La única buena manera de validar los números de teléfono es utilizar link . Hay un puerto iOS, o puede ejecutar la implementación de JavaScript en un UIWebView oculto.

(Lo hice hace unos años, cuando todavía no era un puerto iOS. Funciona como un amuleto y es muy rápido incluso en iPhones antiguos).


Una forma fácil de validar el número de teléfono y el límite de contraseña, simplemente siga el proceso a continuación.

if ((self.mobileTxtFld.text.length < 10 )) { [_mobileTxtFld becomeFirstResponder]; } else if ((self.passwordTxtFld.text.length < kPasswordCharacterMinLimit) || (self.passwordTxtFld.text.length > kPasswordCharacterMaxLimit)) { // show alert }

después de eso puedes implementar el método delegado textfiled "shouldChangeCharactersInRange" en el que solo debes escribir este código

if (textField == _mobileTxtFld) { if([string rangeOfCharacterFromSet:ALLOWED_NUMBERS].location == NSNotFound){ NSUInteger newLength = [textField.text length] + [string length] - range.length; if(newLength > kMobileNumberLimit - 1){ if(textField.text.length != kMobileNumberLimit){ textField.text = [NSString stringWithFormat:@"%@%@",textField.text,string]; } [textField resignFirstResponder]; return NO; } else{ return YES; } } else{ return NO; } } return YES;

aquí ALLOWED_NUMBERS y kMobileNumberLimit son

#define kMobileNumberLimit 10 #define ALLOWED_NUMBERS [[NSCharacterSet decimalDigitCharacterSet] invertedSet] #define minLimit 6 #define maxLimit 17


bueno, depende de qué tan estricto quieras ser, no parece que esta expresión regular sea especialmente estricta. esta expresión regex dice:

comience al principio de la línea coincida con uno + (o tal vez 1 o 0) que parezca ambiguo (pero puede no depender de la implementación) porque la captura paréntesis :() rompe la relación de + y? posiblemente fuera de lugar: haga coincidir cualquier dígito 0-9 1 o 0 veces 6-14 veces luego un dígito 0-9 luego el final de la línea. también nota que cualquier barra inversa tendrá que duplicarse ... @ "/ b" para un límite de palabras. es posible que desee probar algo como ...

@"//b[//d]{3}//-[//d]{3}//-[//d]{4}//b" would I think match your example, but it wouldn''t match (555) 555 - 5555 or 555.555.5555 or +44 1865 55555


txtlpmobile.text es la cadena (no va a entrar el móvil)

int length = [self getLength:txtLpMobile.text]; if(length == 10) { if(range.length == 0) return NO; } if(length == 3){ NSString *num = [self formatNumber:txtLpMobile.text]; txtLpMobile.text = [NSString stringWithFormat:@"(%@) ",num]; if(range.length > 0) { txtLpMobile.text = [NSString stringWithFormat:@"%@",[num substringToIndex:3]]; } } else if(length == 6) { NSString *num = [self formatNumber:txtLpMobile.text]; txtLpMobile.text = [NSString stringWithFormat:@"(%@) %@-",[num substringToIndex:3],[num substringFromIndex:3]]; if(range.length > 0) { txtLpMobile.text = [NSString stringWithFormat:@"(%@) %@",[num substringToIndex:3],[num substringFromIndex:3]]; } } NSUInteger newLength; newLength = [txtLpMobile.text length] + [string length] - range.length; NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY] invertedSet]; NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""]; return (([string isEqualToString:filtered])&&(newLength <= CHARACTER_LIMIT));

para el número de formato

-(NSString*)formatNumber:(NSString*)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; int length = [mobileNumber length]; if(length > 10) { mobileNumber = [mobileNumber substringFromIndex: length-10]; } return mobileNumber; }

para obtener longitud

-(int)getLength:(NSString*)mobileNumber { mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; mobileNumber = [mobileNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; int length = [mobileNumber length]; return length; }


NSString *phoneRegex = @"^((//+)|(00))[0-9]{6,14}|[0-9]{6,14}$";

Esto se prueba RegularExpression Esto se aceptará con el código de país O sin código de país


Copie y pegue el método para validar los números de teléfono:

- (BOOL)validatePhone:(NSString *)phoneNumber { NSString *phoneRegex = @"^((//+)|(00))[0-9]{6,14}$"; NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex]; return [phoneTest evaluateWithObject:phoneNumber]; }

o biblioteca de código abierto para validar números de teléfono

https://github.com/iziz/libPhoneNumber-iOS


-(int)findLength:(NSString*)phoneNumber { phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@" " withString:@""]; phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; phoneNumber = [phoneNumber stringByReplacingOccurrencesOfString:@"+" withString:@""]; int length = [phoneNumber length]; return length;

}


NSString *phoneRegex = @"^((//+)|(00))[0-9]{6,14}$";

De esta manera es un poco mejor. Tu código funcionará también si escapas de la "/".