用户可以在一个文本字段中输入电子邮件ID或电话。如果用户编号输入电子邮件ID,则验证电子邮件。如果用户输入电话,则验证电话号码。验证应仅在一个文本字段中完成。我知道电子邮件ID和电话号码验证以及方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
如何检测用户是否输入了电子邮件ID或电话,然后进行相应的验证?
答案 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 {
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
}