【问题标题】:Email Validation iPhone SDK电子邮件验证 iPhone SDK
【发布时间】:2011-06-29 04:52:20
【问题描述】:

假设我创建了IBOutlet UITextField *emailValidate;

还有空方法

-(IBAction)checkEmail:(id)sender {

// Add email validation code here.

}

并将文件所有者文件链接到TextField,我必须在方法中插入什么代码来验证电子邮件地址?检查只包含一个'@',并且只包含一个'.'包括吗?

【问题讨论】:

标签: iphone validation email


【解决方案1】:

我已经成功使用了 Macarse(大正则表达式)共享的解决方案几个星期,但我突然遇到了一个有问题的案例。例如,它没有通过“test1_iPhone@neywen.net”的测试。 所以我选择回到 S P Varma 提供的更简单的解决方案(小而简单的正则表达式)。

【讨论】:

    【解决方案2】:

    您可以从以下link 获取一组代码。希望这可能会有所帮助

    【讨论】:

      【解决方案3】:

      就我而言,我使用的是this blogpost:

      NSString *emailRegEx =
          @"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
          @"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
          @"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
          @"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5"
          @"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
          @"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
          @"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
      

      【讨论】:

        【解决方案4】:

        使用下面的函数...

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

        【讨论】:

          【解决方案5】:

          您可以通过拆分“@”上的字符串并检查 2 个部分来确定是否只有一个“@”。

          int numberOfAtPieces = [[emailValidate.text  componentsSeparatedByString:@"@"] count];
          if ( numberOfAtPicess != 2 ) {  // show error alert }
          else {  // let it through }
          

          【讨论】:

            【解决方案6】:

            您可以在 UITextField 的文本上调用以下方法:

            - (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 [emailTest evaluateWithObject:candidate];
            }
            

            请根据您的需要调整 emailRegex 正则表达式。

            【讨论】:

            猜你喜欢
            • 2011-03-27
            • 1970-01-01
            • 1970-01-01
            • 2018-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-07-30
            相关资源
            最近更新 更多