0

フォームで電子メール アドレスを検証する次の方法があります。

 -(BOOL) validEmailAddress:(NSString*) emailString {
    NSString *regExPattern = @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}$";
    NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
    NSUInteger regExMatches = [regEx numberOfMatchesInString:emailString options:0 range:NSMakeRange(0, [emailString length])];
    if (regExMatches == 0) 
        return NO; // email invalid
     else
        return YES; // email valid 
  }

これは、ユーザーが「abc@xyz」の電子メール (.com や .org などのスーパー ドメインなし) を送信した場合に失敗することを除けば、うまく機能します。

問題は「。」に関係していると確信しています。私の正規表現で。こんな感じで逃げてみましたが、

NSString *regExPattern = @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";

しかし、それもうまくいきません。助言がありますか?

編集:最初に質問を投稿したときに、最後のドットの前にエスケープを入れませんでした。ごめん。

4

3 に答える 3

0

最後のドットをエスケープする必要があります。したがって、あなたの式は次のようになります。

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

ただし、\Objective C では もエスケープ文字として解釈されるため、エスケープする必要があります。\\これは、2 つのバックスラッシュ ( ) を使用して、Objective C で行われます。

NSString *regExPattern = @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$";
于 2013-04-05T22:51:17.457 に答える
0

最後の例にはエスケープ シーケンスがありません。試す:

NSString *regExPattern = @"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$";
于 2013-04-05T22:51:29.180 に答える