私は3つのUITextField(ユーザー名、電子メール、およびパスワード)を持つビューコントローラを持っています。UITextFieldのテキストが有効なメールかどうかを確認するには?
すべてのフィールドにテキストが含まれているかどうかを確認し、メールのテキストフィールドが有効なメールかどうかを確認する方法が必要です(おそらく@
のサインがあるかどうかをチェックしてください)。誰もこれで助けることができますか?
私は3つのUITextField(ユーザー名、電子メール、およびパスワード)を持つビューコントローラを持っています。UITextFieldのテキストが有効なメールかどうかを確認するには?
すべてのフィールドにテキストが含まれているかどうかを確認し、メールのテキストフィールドが有効なメールかどうかを確認する方法が必要です(おそらく@
のサインがあるかどうかをチェックしてください)。誰もこれで助けることができますか?
これは、適切な電子メールのために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);
}
を確認するには。
iOS 4.0以上をターゲットにしている場合は、NSRegularExpressionと考えて、たとえばthisの行に沿ってUITextFieldの内容をさらに微妙にチェックすることもできます。
はこれを試してください: -
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
}
次のコードは、正規表現(正規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];
}
ある、など.museumなどの新しいドメインが動作しません。 – Martin
私は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];
}
http://stackoverflow.com/a/3638271/644149は、この正規表現で良い方法 –