2016-03-10 35 views
0

與正則表達式不接受兩個字符的擴展名如。在.CO等驗證電子郵件地址的iOS電子郵件地址驗證不接受。在

BOOL stricterFilter = NO; 
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]; 
+0

看到這個鏈接一次http://stackoverflow.com/questions/5428304/email-validation-on-textfield-in-iphone-sdk –

+0

檢查此答案http://stackoverflow.com/questions/34493418/email-regular-使用特殊字符表達問題/ 34493537#34493537 – kb920

+0

它接受.in作爲有效的電子郵件。 – kb920

回答

2

使用此

#pragma mark - Valid Email 
+ (BOOL)isValidEmail:(NSString*)email 
{ 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
    return [emailTest evaluateWithObject:email]; 
} 
+0

與此代碼同樣的問題 –

+0

我已經檢查過,並且工作完美。你需要檢查你的代碼。 –

+0

感謝在我的代碼中發現kiran bug –

1

你只需要在laxString檢查看起來像下面:

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

然後檢查必須工作

以下是我的工作代碼:

- (BOOL)validateEmailWithString:(NSString*)checkString 
{ 
    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:checkString]; 
} 
+0

仍然沒有變化@nitin gohel –

+0

必須檢查它的工作代碼 –

+0

我犯了一個小錯誤@nitin,加上一個快速回復 –

0

驗證電子郵件usind以下功能

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

代碼

在郵件的末尾驗證電子郵件檢查 。在或不同意下面的片之後,
NSString *lastThreeChar = [yourNewString substringFromIndex:[txt_Email.text length] - 3]; 
    if ([lastThreeChar isEqualToString:@".in"]) 
    { 
     // email_id contain .in 
    } 
    else{ 
     // email_id dosen't contain .in 
     } 
0
-(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][email protected][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)); 
}