iOS:电子邮件ID以及一个文本字段中的电话号码评估

时间:2013-09-16 06:51:51

标签: ios validation uitextfielddelegate

用户可以在一个文本字段中输入电子邮件ID或电话。如果用户编号输入电子邮件ID,则验证电子邮件。如果用户输入电话,则验证电话号码。验证应仅在一个文本字段中完成。我知道电子邮件ID和电话号码验证以及方法

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

如何检测用户是否输入了电子邮件ID或电话,然后进行相应的验证?

6 个答案:

答案 0 :(得分:3)

如果来自NSString的{​​{1}}对象包含字符 @ ,那么它就是电子邮件,否则就不是。此外,我们还可以检查字符串是否包含十个字符,并且所有字符都是电话验证的数字。

您可以使用以下代码查找 @ 字符。

textfield

答案 1 :(得分:1)

用户可以输入两者,但你不知道他究竟想要输入什么。

我建议您同时应用两种验证。如果其中一个成功,你知道他输入了什么,你可以继续。

编辑:阅读其他答案我不认为检查“@”字符是一个好主意,因为用户可能错误地没有输入该字符(即按下数字2),并且您将应用错误的验证< / p>

答案 2 :(得分:0)

我认为你应该写两个验证器并检查其中一个验证器是否成功完成。

- (BOOL) isTextValid: (NSString *) text
{
    return [self isPhoneNumberValid: text] || [self isEmailValid: text];
}

答案 3 :(得分:0)

您可能需要检查if ... else条件。

如果输入的单词有@字符,请进行电子邮件ID验证 否则去电话验证。

答案 4 :(得分:0)

验证UITextfield文本使用此方法

  • (void)textFieldDidEndEditing:(UITextField *)textField是因为
每当用户键入键盘时,每次调用时都会使用ChangeCharactersInRange方法

  • (void)textFieldDidEndEditing:(UITextField *)textField {

    if(textField.tag = 1){

    if([self isValidPhoneNumber] || [self isValidEmail]){

    回归成功;

    }否则{

    返回失败; }

}

}

答案 5 :(得分:0)

你们所有人的问题似乎都错了。 我终于解决了这个问题。我必须在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

    }