1

"."を使用してメールアドレスが連続しないようにする方法はありますNSPredicateか? 現在と前の入力が「.」であるかどうかを別の方法で確認できます。しかし、私はすでに使用していますNSPredicate。したがって、その中に何らかの条件を含める必要がある場合にのみ、これを好みます。私のコード:

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

ありがとうございました。

4

1 に答える 1

1

次のように、式の中間部分を変更して、ドット文字の一致に(?!\\.) 否定先読みを使用することができます。.

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

式のどこでも、「後続の記号がドットでない\\.(?!\\.)場合にのみ、単一のドットに一致する」と述べています。後続のシンボルは、先読みをチェックするプロセスで消費されません。メールの最初の部分もドットを入れないようにしたい場合は、中間部分と同じように前の部分を変更します。@

([A-Z0-9a-z_%+-]|\\.(?!\\.))+@([A-Za-z0-9-]|\\.(?!\\.))+\\.[A-Za-z]{2,4}
于 2013-04-28T10:45:35.383 に答える