2015-06-12 2 views
0

У меня есть массив якобы действительных писем, Im тестирует свою инструкцию regex, чтобы проверить, работает ли мой метод regex. Исходя из этого списка, все они должны вернуться через, однако некоторые не делают, как бы я пуленепробиваемые мой код, так что работает соответственно:Проверка электронной почты в iOS - Regex не работает - код содержит массив действительных адресов электронной почты

+(BOOL)isValidEmail: (NSString *)emailString{ 
    BOOL stricterFilter = YES; 
    NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-][email protected]([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}"; 
    NSString *laxString = @"[email protected]([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:emailString]; 

} 

массив действительных писем является:

NSArray *array = [NSArray arrayWithObjects:@"[email protected]", 

        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected][123.123.123.123]", 
        @"“email”@example.com", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        @"[email protected]", 
        nil]; 

Я тогда выполнить этот цикл:

for (NSString * email in array) { 
    NSLog(@"Email: %@ is valid %@",email,[NSString isValidEmail:email] ? @"YES" : @"NO"); 
    ; 
} 

какие журналы:

Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid NO 
Email: [email protected][123.123.123.123] is valid NO 
Email: /“email/”@example.com is valid NO 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 
Email: [email protected] is valid NO 
Email: [email protected] is valid YES 
Email: [email protected] is valid YES 

Все они должны быть действительны в соответствии с этим Valid email addresses

ответ

1

Попробуйте это:

[\da-zA-Z_+\\.\-\/(“|”)][email protected](([a-zA-Z\-]+(\\.[a-zA-Z]+){1,2})|(\[?[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\]?)) 
+0

Спасибо за что, вы знаете, как сделать это в NSString? – DevC

+0

Никогда не использовал NSString, но был бы тот же формат, который у вас есть? NSString * stricterFilterString = @ "[\ da-zA-Z _ + \. \ - \/(" | ")] + @ (([a-zA-Z \ -] + (\. [A-zA-Z] +), {1,2}) | (\ [\ d {1,3} \ \ д {1,3} \ \ д {1,3} \ \ д {1,3} \?...]?)) "; – depperm

+0

К сожалению, я получаю неизвестную escape-последовательность '\.' – DevC

Смежные вопросы