2017-02-16 93 views
0

喜的朋友,我需要正确的邮箱格式验证,并在我的代码目标C电子邮件格式验证的正确方法

+ (BOOL)validateEmailID:(NSString *)emailString { 
    if ([emailString length] == 0) { 
     return NO; 
    } 
    NSString *regExPattern = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}" 
    NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil]; 
    NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])]; 
    return regExMatches != 0; 
} 

其工作的罚款。但我输入电子邮件ID像 - [email protected] & [email protected] & [email protected]其工作良好。 但我的问题是第一个值应该是字符然后数字或全字符电子邮件ID验证: 我想输入电子邮件像[email protected][email protected][email protected]这种格式。不仅是完整的数字。 混合的电子邮件ID,但首先输入的值应该是字符。

请有人可以帮忙。下面

+0

好文章http://www.regular-expressions.info/email.html – souvickcse

+0

一般情况下,电子邮件地址不能完全通过正则表达式验证。我建议使用通用的'^ \\ S + @ \ S + $'。其他一切都不需要。验证应该保护用户输入不好的数据(例如全名到电子邮件)。它不一定是完美的,电子邮件有太多边缘情况。 – Sulthan

回答

0

是代码

+(BOOL)validateEmailWithstring:(NSString*)mailString 
{ 
    NSString *validString = @"[email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*"; 
    NSPredicate *emailTest=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",validString]; 
    return [emailTest evaluateWithObject:mailString]; 
} 
+0

感谢@阿伦,它的工作,但不完全是我想要的。如果你输入[email protected],它的答案是错误的。这正是bro.first输入的值应该是[email protected]这样的字符。不是这个[email protected]或[email protected]。 –

+0

所以,你想这个工作 - [email protected]。用户应该输入的起始最小字符应该是什么? – Arun

+0

Replace - valid string - 'validString =“[A-Za-z] {1} [A-Za-z0-9 - ]。+ @([A-Za-z0-9 - ] + \\。)+ [A-Za-z] {2} [A-Za-z] *“'将{1}更改为想要作为字符串输入的最小字符数。 – Arun

-1

Accordint到this站点:

我根据苹果recomendations添加前缀的NSString类别的方法。

@interface NSString(RegularExpressions) 

- (BOOL)rep_isValidEmail; 

@end 

@implementation 

- (BOOL)rep_isValidEmail 
{ 
    NSString *expression = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"; 
     NSPredicate *test=[NSPredicate predicateWithFormat:@"SELF MATCHES %@",expression]; 
     return [test evaluateWithObject:self]; 
} 
@end 
0

有关全球:

+(BOOL)validateEmail:(NSString *)mailStr { 

    NSString *validStr = @"/^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/"; 
    NSPredicate *emailPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",validStr]; 
    return [emailPre evaluateWithObject:mailStr]; 
} 
0

试试这个

func validateEmail(candidate: String) -> Bool { 
let emailRegex = "[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" 
return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluateWithObject(candidate) 
} 
1

试试这个。

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

的表达,您正在使用不符合RFC 5322,这样你就阻止许多领域一样,每家公司在英国([email protected])。

+ (BOOL) validateEmail: (NSString *) candidate; 
{ 
    // The Official Standard: RFC 5322 
    // http://www.regular-expressions.info/email.html 
    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])+)\\])"; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 
    return [predicate evaluateWithObject:candidate]; 
}