2013-04-28 59 views
1

有沒有什麼辦法可以阻止在使用NSPredicate的電子郵件地址中連續使用"."?我可以用另一種方式檢查當前和以前的輸入是否是「。」。但我已經使用NSPredicate。因此,如果我只需要包含一些條件,那麼我就更喜歡這一點。 我的代碼:防止連續「。」在iPhone應用程序中的電子郵件地址

NSString * email = self.emailTextField.text; 
NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
NSPredicate *emailValidation =[NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 
BOOL isValidEmail = [emailValidation evaluateWithObject:email]; 

謝謝。

+0

注意,有效的電子郵件地址可能包含連續的「」不要讓你的驗證器過於嚴格。 – 2013-04-28 23:19:20

+0

@GregParker但是我已經檢查過,諸如yahoo,gmail,hotmail等電子郵件巨頭不允許連續使用''。「''。你能給一個真正的例子,電子郵件確實包含或可以包含連續的'「。」'。順便說一句,謝謝給我看紅燈。:) – Geek 2013-04-29 05:39:46

回答

1

你可以嘗試修改你的表達的中間部分使用(?!\\.)負先行的點.字符的比賽,例如:

[A-Z0-9a-z._%+-][email protected]([A-Za-z0-9-]|\\.(?!\\.))+\\.[A-Za-z]{2,4} 

在表達\\.(?!\\.)任何地方寫着「匹配單個只有當下面的符號是而不是一個點時纔有點「。接下來的符號在檢查超前的過程中沒有被消耗。如果要防止在電子郵件的初始部分點爲好,修改部分@之前以同樣的方式作爲中間部分:

([A-Z0-9a-z_%+-]|\\.(?!\\.))[email protected]([A-Za-z0-9-]|\\.(?!\\.))+\\.[A-Za-z]{2,4} 
+0

謝謝你的回答。你能告訴我這到底是什麼嗎?我不僅要防止在中間部分,而且要防止在電子郵件地址中的任何地方。 – Geek 2013-04-28 10:49:18

+0

+1。我現在無法對此進行測試。但我認爲這會奏效。 – Geek 2013-04-28 11:10:24

相關問題