【问题标题】:Email id starting with number is not accepted不接受以数字开头的电子邮件 ID
【发布时间】:2016-04-01 12:45:17
【问题描述】:

我正在使用以下代码进行电子邮件验证。如果电子邮件 ID 以数字开头,那么它不接受,我想像 123a@asd.com 一样接受。请给我建议。

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];
return [emailTest evaluateWithObject:emailID];

提前致谢

【问题讨论】:

  • 它对我来说已经很好了。再次检查
  • 我已经检查了 123a@asd.com,它与我的答案相符。
  • 它也适用于他的回答
  • 严格的正则表达式表示接受 A-Z 0-9 a-z . _ % +- 作为电子邮件地址的项目,这意味着它将接受电子邮件地址的前导数字 - 代码按书面方式工作。现在,如果有前导 whitespace 或尾随 whitespace 那么这些将触发严格的拒绝,而尾随 whitespace 将触发宽松的拒绝

标签: objective-c regex email-validation


【解决方案1】:
NSString *mailreg=@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *mailtest=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",mailreg];
[mailtest evaluateWithObject:checkString]

试试这个

【讨论】:

    【解决方案2】:

    这是我的观察,检查可能是您添加了空格,这就是为什么它没有正确验证它 - 正如@Petesh 在 cmets 中也提到的那样 - 很好的解释人。

    -(BOOL)validate:(NSString *)emailID {
        BOOL stricterFilter = YES;
        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:emailID];
    }
    
    -(void)validateEmails   {
        if ([self validate:@" 123a@asd.com"]   == true)    {
            NSLog(@"true");
        } else {
            NSLog(@"false"); //Result
        }
    
        if ([self validate:@"123a@asd.com"]   == true)    {
            NSLog(@"true"); //Result
        } else {
            NSLog(@"false");
        }
    
        if ([self validate:@"myemail@gmail.com"]   == true)    {
            NSLog(@"true"); //Result
        } else {
            NSLog(@"false");
        }
    
        if ([self validate:@"my?email@gmail.com"]   == true)    {
            NSLog(@"true");
        } else {
            NSLog(@"false"); //Result
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2017-04-13
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多