iOS:在一个文本字段中评估电子邮件ID和电话号码
用户可以在一个文本字段中输入电子邮件id或电话。如果用户号码输入电子邮件id,则电子邮件将被验证。如果用户输入phone,则验证电话号码。验证只能在一个文本字段中进行。我知道电子邮件id和电话号码验证以及方法iOS:在一个文本字段中评估电子邮件ID和电话号码,ios,validation,uitextfielddelegate,Ios,Validation,Uitextfielddelegate,用户可以在一个文本字段中输入电子邮件id或电话。如果用户号码输入电子邮件id,则电子邮件将被验证。如果用户输入phone,则验证电话号码。验证只能在一个文本字段中进行。我知道电子邮件id和电话号码验证以及方法 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 如何检测用户是否输入电子邮件id或电话
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
如何检测用户是否输入电子邮件id或电话,然后进行相应的验证 如果
textfield
中的NSString
对象包含字符@,则它是电子邮件,否则它不是。此外,我们还可以检查字符串是否包含d=s十个字符,并且所有字符都是用于电话验证的数字
您可以使用以下代码查找@字符
NSString *str = self.textField.text;
NSRange range = [str rangeOfString:@"@"];
if (range.location != NSNotFound)
{
// it is an email
}
else if(str.length == 10 && [str rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]].location != NSNotFound) {
// it is a phone
}
else{
// it is neither of the two
}
如果
textfield
中的NSString
对象包含字符@,则它是电子邮件,否则它不是。此外,我们还可以检查字符串是否包含d=s十个字符,并且所有字符都是用于电话验证的数字
您可以使用以下代码查找@字符
NSString *str = self.textField.text;
NSRange range = [str rangeOfString:@"@"];
if (range.location != NSNotFound)
{
// it is an email
}
else if(str.length == 10 && [str rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"0123456789"]].location != NSNotFound) {
// it is a phone
}
else{
// it is neither of the two
}
用户可以同时输入这两项,但您不知道他实际上想输入什么 我建议您应用这两种验证。如果其中一个成功了,你知道他进入了什么,你可以继续
编辑:阅读其他答案我认为检查“@”字符不是一个好主意,因为用户可能错误地输入了该字符(即按了数字2),并且您将应用错误的验证。用户可以同时输入这两个字符,但您不知道他实际上要输入什么 我建议您应用这两种验证。如果其中一个成功了,你知道他进入了什么,你可以继续
编辑:阅读其他答案我认为检查“@”字符不是一个好主意,因为用户可能没有错误地输入该字符(即按数字2),并且您将应用错误的验证。我认为您应该编写两个验证程序,并检查其中一个是否成功完成
- (BOOL) isTextValid: (NSString *) text
{
return [self isPhoneNumberValid: text] || [self isEmailValid: text];
}
我认为您应该编写两个验证器,并检查其中一个是否成功完成
- (BOOL) isTextValid: (NSString *) text
{
return [self isPhoneNumberValid: text] || [self isEmailValid: text];
}
您可能需要检查if…else条件 如果输入的word具有@字符,请进行电子邮件id验证
else进行电话验证。您可能需要检查if…else条件 如果输入的word具有@字符,请进行电子邮件id验证
否则请进行电话验证。使用此方法验证UITextfield文本
- (void)textfielddidediting:(UITextField*)textField因为
- (void)textfielddidediting:(UITextField*)textField{ 如果(textField.tag=1){ if([self-isValidPhoneNumber]| |[self-isValidEmail]){ 回归成功 }否则{ 返回失败; }
}UITextfield文本的验证使用此方法
- (void)textfielddidediting:(UITextField*)textField因为
- (void)textfielddidediting:(UITextField*)textField{ 如果(textField.tag=1){ if([self-isValidPhoneNumber]| |[self-isValidEmail]){ 回归成功 }否则{ 返回失败; }
}你们所有人似乎都把我的问题搞错了。 我终于这样解决了。我必须在emailIdTextField中验证这两个(电子邮件id和电话号码)
NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
if([emailTest evaluateWithObject:self.emailTextField.text] == NO && [phoneTest evaluateWithObject:self.emailTextField.text] == NO)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Can't login" message:@"Please enter a valid email id / phone no. (abc@xyz.com OR +11234567890)" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
else
{
//login successful
}
你们似乎都把我的问题搞错了。 我终于这样解决了。我必须在emailIdTextField中验证这两个(电子邮件id和电话号码)
NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
NSString *phoneRegex = @"^((\\+)|(00))[0-9]{6,14}$";
NSPredicate *phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
if([emailTest evaluateWithObject:self.emailTextField.text] == NO && [phoneTest evaluateWithObject:self.emailTextField.text] == NO)
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Can't login" message:@"Please enter a valid email id / phone no. (abc@xyz.com OR +11234567890)" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
else
{
//login successful
}
您可以在if子句中使用该代码。没有必要启动另一个if条件。您可以在if子句中加入该代码。没有必要启动另一个if条件。我认为这是不可能的。我只需要创建两个单独的文本字段,我想这是不可能的。我只需要创建两个单独的文本字段。