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 回答