私は電子メールIDを検証する:正規表現
[email protected]: - 有効な
私の知る限り、電子メールIDの "@"の後ろに複数のドットは使用できません。 @の後ろの1つの点をより多く検出し、検証を確認する方法を教えてください。
私は電子メールの検証に以下の正規表現を使用しています。 両方とも正常に動作しています。 しかし、@記号の後に複数のドットをチェックすることはできません。
NSString *emailRegex =
@"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
@"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
@"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
@"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5"
@"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-"
@"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21"
@"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@", emailRegex];
return [emailTest evaluateWithObject:email];
また、私はこれを試してみました:
NSString *regex1 = @"\\A[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,4}\\z";
NSString *regex2 = @"^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*";
NSPredicate *test1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex1];
NSPredicate *test2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex2];
return [test1 evaluateWithObject:email] && [test2 evaluateWithObject:email];
なぜ複数のドットを使用できないのですか?ホスト名が多くの点を持つことは完全に有効です。あなたがそれらを制限しようとすると、英国のすべての会社(company.co.uk)のように、かなり怒っている人々がいるでしょう... –
[電子メールアドレスがiOS上で有効であることを確認してください] /stackoverflow.com/questions/3139619/check-that-an-email-address-is-valid-on-ios) –
[サインイン検証](http://www.programmingcrew.in/2015/09/sign)を確認してください。 -in-validations-in-objective-v.html) – pkc456