2011-10-10 10 views
7

私は3つのUITextField(ユーザー名、電子メール、およびパスワード)を持つビューコントローラを持っています。UITextFieldのテキストが有効なメールかどうかを確認するには?

すべてのフィールドにテキストが含まれているかどうかを確認し、メールのテキストフィールドが有効なメールかどうかを確認する方法が必要です(おそらく@のサインがあるかどうかをチェックしてください)。誰もこれで助けることができますか?

答えて

4

これは、適切な電子メールのためにUITextFieldをチェックします。
このメソッドをtextFields delegateに追加し、変更しようとしている文字を追加するかどうかを確認します。
戻りYESまたはNO有効なメールアドレスに比べて、テキストフィールドの現在のテキストに応じて:テキストフィールドが空であるか、またはちょうどあなたのビューコントローラのどこにでもif (myTextField.text.length > 0) {}を使用しない場合は

#define ALPHA     @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 
#define NUMERIC     @"1234567890" 
#define ALPHA_NUMERIC   ALPHA NUMERIC 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSCharacterSet *unacceptedInput = nil; 
    if ([[textField.text componentsSeparatedByString:@"@"] count] > 1) { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".-"]] invertedSet]; 
    } else { 
     unacceptedInput = [[NSCharacterSet characterSetWithCharactersInString:[ALPHA_NUMERIC stringByAppendingString:@".!#$%&'*+-/=?^_`{|}[email protected]"]] invertedSet]; 
    } 
    return ([[string componentsSeparatedByCharactersInSet:unacceptedInput] count] <= 1); 
} 

を確認するには。

+0

http://stackoverflow.com/a/3638271/644149は、この正規表現で良い方法 –

0

iOS 4.0以上をターゲットにしている場合は、NSRegularExpressionと考えて、たとえばthisの行に沿ってUITextFieldの内容をさらに微妙にチェックすることもできます。

3

はこれを試してください: -

if(![emailTextField.text isEqualToString:@""] && ![userNameTextField.text isEqualToString:@""] && ![passwordTextField.text isEqualToString:@""]) 
     { 

     NSString *emailRegEx = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; 
     NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 
     //Valid email address 
     if ([emailTest evaluateWithObject:emailTextField.text] == YES) 
     { 
    } 
    else 
    { 
    //not valid email address 
    } 
} 


     else 
     { 
     //any of the text field is empty 
     } 
6

次のコードは、正規表現(正規expresion)を使用して電子メールIDの妥当性をチェックするための使用です。

(BOOL) validateEmail: (NSString *) candidate { 
    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 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
+0

ある、など.museumなどの新しいドメインが動作しません。 – Martin

5

私はMimitのソリューションを使用しましたが、emailRegexを変更して博物館などの長い名前を使用できるようにしました。したがって、最後の中括弧は{2,4}ではなく{2,6}です。私は長い名前でそれをテストし、それは動作します。ありがとうございました。

-(BOOL) validateEmail: (NSString *) candidate { 
    NSString *emailRegex = @"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,6}"; 
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; // return 0; 
    return [emailTest evaluateWithObject:candidate]; 
} 
関連する問題