如何检查电子邮件的格式是不是有效?
Posted
技术标签:
【中文标题】如何检查电子邮件的格式是不是有效?【英文标题】:How to check whether the email is in valid format or not?如何检查电子邮件的格式是否有效? 【发布时间】:2014-04-02 07:33:23 【问题描述】:我正在使用以下代码来检查我在 uitextfield 中输入的电子邮件的验证。但是当我输入 abcd@m.com.com 时它返回 true,它没有返回 false。
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
谁能推荐我?
【问题讨论】:
关于使用正则表达式验证电子邮件地址的讨论很多,例如这里:***.com/questions/201323/…。 - 另外abcd@m.com.com
对我来说看起来“格式正确”(但我可能错了!)并且匹配正则表达式。为什么你期望得到虚假?
abcd@m.com.com
可以是有效的电子邮件地址!
但我不需要 abcd@m.com.com。我需要像 abcd@m.com
【参考方案1】:
不要排除域 m.com.com
,因为它可能是 com.com
的子域(这可能看起来很奇怪,但它是一个有效的 - 顺便说一句。真实的 - 域)。
如果您仍想排除所有子域(例如:在@
之后只允许一个.
),您将排除电子邮件地址,例如:
所以,您可能不想排除它们。
【讨论】:
【参考方案2】:ios 代码的电子邮件验证。
- (BOOL)validateEmailWithString:(NSString*)email
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]2,4";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
文本字段委托
- (BOOL)textFieldShouldReturn:(UITextField *)textField
[textField resignFirstResponder];
if ([self validateEmailWithString:textField.text])
Nslog(@"Valid");
else
Nslog(@"Not Valid");
【讨论】:
我使用的是相同的代码。我不希望电子邮件地址中有另一个 .com 并且应该返回为 false。我需要像 ancd@m.com 为什么要排除 .com.com? m.com.com 是 com.com 的(可能的)子域以上是关于如何检查电子邮件的格式是不是有效?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查字符串是不是是android中的有效电子邮件? [复制]