确保用户输入的格式正确?

时间:2012-06-19 05:03:58

标签: iphone objective-c regex email nsregularexpression

我在“联系人”屏幕中有一个文本字段,用户需要输入电子邮件地址才能向我发送消息。 什么是确保用户输入有效电子邮件地址的最佳方式,例如:

a@b.com / net / org / co.il
abc@gmail.com
abc@yahoo.com

等。

由于

3 个答案:

答案 0 :(得分:5)

尝试以下方法:

- (BOOL) validateEmail: (NSString *) candidate {
    NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
//  return 0;
    return [emailTest evaluateWithObject:candidate];
}


-(IBAction)btnTapped:(id)sender{

    if([self validateEmail:[txtEmail text]] ==1)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"You Enter Correct Email id." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alert show];
        [alert release];

    }
    else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"You Enter Incoorect Email id." delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alert show];
        [alert release];
    }
}

答案 1 :(得分:2)

使用此textField委托函数,因为每次输入的文本都会调用它:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
 {
      NSString *strEnteredText = textField.text;
     if(strEnteredText.length>0) 
     {
       if([self validateEmail:strEnteredText])
       {
          //Valid email 
          //Use UILabel to give message
         // BOOL email = true to know email is valid when submit button tapped
       }
       else
       {
          //Not Valid email
          //Use UILabel to give message
          // BOOl emaiL = false to know email is valid when submit button tapped
        }
     }
 }

添加此方法.h文件

 - (BOOL) validateEmail: (NSString *) enteredText 
 {
   NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
   NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
   return [emailTest evaluateWithObject:enteredText];
 }

答案 2 :(得分:0)

夫特

extension String {
    func isValidEmail() -> Bool {
        let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,10}"
        let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
        let result = emailTest.evaluateWithObject(self)
        return result
    }
}

"jim@off.com".isValidEmail() //true
"jim.com".isValidEmail() // false