【问题标题】:iOS Email address validation not accepting .iniOS 电子邮件地址验证不接受 .in
【发布时间】:2016-06-24 19:11:54
【问题描述】:

使用正则表达式验证电子邮件地址不接受两个字符扩展名,例如 .in .co 等

BOOL stricterFilter = NO;
NSString *stricterFilterString = @"^[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}$";
NSString *laxString = @"^.+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*$";
NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];

【问题讨论】:

标签: ios objective-c regex


【解决方案1】:
-(BOOL)validateEmail {
    //Email address field should give an error when the email address begins with ".","-","_" .
    // Works well with @me.com.

    NSString *emailRegex = @"[A-Z0-9a-z]([A-Z0-9a-z._-]{0,64})+[A-Z0-9a-z]+@[A-Z0-9a-z]+([A-Za-z0-9.-]{0,64})+([A-Z0-9a-z])+\\.[A-Za-z]{2,4}";
    NSPredicate *emailPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];   
    return ([emailPredicate evaluateWithObject:self.text] && self.text.length <= 64 && ([self.text rangeOfString:@".."].location == NSNotFound));
}

【讨论】:

    【解决方案2】:

    您只需签入laxString,如下所示:

     NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
    

    然后检查它必须工作

    以下是我的工作代码:

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

    【讨论】:

    • 仍然没有变化@nitin gohel
    • 我犯了一个小错误@nitin,加上一个快速响应
    【解决方案3】:

    使用下面的函数验证电子邮件

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

    验证电子邮件后检查电子邮件末尾的 .in 是否使用以下代码

    NSString *lastThreeChar = [yourNewString substringFromIndex:[txt_Email.text length] - 3];
        if ([lastThreeChar isEqualToString:@".in"])
         {
          // email_id contain .in
         }
        else{
            // email_id dosen't contain .in
          }
    

    【讨论】:

      【解决方案4】:

      使用这个

      #pragma mark - Valid Email
      + (BOOL)isValidEmail:(NSString*)email
      {
          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:email];
      }
      

      【讨论】:

      • 我已经检查过了并且工作正常。您需要检查您的代码。
      • 此正则表达式与xyz@company.email 格式不正确
      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 2012-07-27
      • 1970-01-01
      • 2018-03-13
      • 2011-09-02
      • 2014-03-12
      相关资源
      最近更新 更多