如何快速验证电子邮件地址?
本文翻译自:How to validate an e-mail address in swift?
Does anyone know how to validate an e-mail address in Swift? 有谁知道如何在Swift中验证电子邮件地址? I found this code: 我发现此代码:
- (BOOL) validEmail:(NSString*) emailString {if([emailString length]==0){return NO;}NSString *regExPattern = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-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])];NSLog(@"%i", regExMatches);if (regExMatches == 0) {return NO;} else {return YES;}
}
but I can't translate it to Swift. 但我无法将其翻译为Swift。
#1楼
参考:https://stackoom.com/question/1isCQ/如何快速验证电子邮件地址
#2楼
I would use NSPredicate
: 我会用NSPredicate
:
func isValidEmail(emailStr:String) -> Bool { let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)return emailPred.evaluate(with: emailStr)
}
for versions of Swift earlier than 3.0: 对于低于3.0的Swift版本:
func isValidEmail(emailStr:String) -> Bool {let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)return emailPred.evaluate(with: emailStr)
}
for versions of Swift earlier than 1.2: 对于低于1.2的Swift版本:
class func isValidEmail(emailStr:String) -> Bool {let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"if let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx) {return emailPred.evaluateWithObject(emailStr)}return false
}
#3楼
Here is a method based on rangeOfString
: 这是一个基于rangeOfString
的方法:
class func isValidEmail(testStr:String) -> Bool {let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"let range = testStr.rangeOfString(emailRegEx, options:.RegularExpressionSearch)let result = range != nil ? true : falsereturn result
}
Note: updated TLD length. 注意:更新的TLD长度。
Here is the definitive RegEx for email as per RFC 5322, note that this is best not used because it only checks the basic syntax of email addresses and does not check is the top level domain exists. 这是根据RFC 5322定义的电子邮件正则表达式,请注意,最好不要使用它,因为它仅检查电子邮件地址的基本语法,而不检查是否存在顶级域。
(?:[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])+)\])
See Regular-Expressions.info for more complete information on email RegExs. 见Regular-Expressions.info有关电子邮件RegExs更全面的信息。
Note that no escaping as required by a language such as Objective-C or Swift. 请注意,没有像Objective-C或Swift这样的语言必须进行转义。
#4楼
As a String
class extension 作为String
类扩展
SWIFT 4 SWIFT 4
extension String {func isValidEmail() -> Bool {// here, `try!` will always succeed because the pattern is validlet regex = try! NSRegularExpression(pattern: "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", options: .caseInsensitive)return regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: count)) != nil}
}
Usage 用法
if "rdfsdsfsdfsd".isValidEmail() {}
#5楼
This is the updated version for Swift 2.0 - 2.2 这是Swift 2.0-2.2的更新版本
var isEmail: Bool {do {let regex = try NSRegularExpression(pattern: "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", options: .CaseInsensitive)return regex.firstMatchInString(self, options: NSMatchingOptions(rawValue: 0), range: NSMakeRange(0, self.characters.count)) != nil} catch {return false}
}
#6楼
Here is a fuse of the two most up-voted answer with the correct regex: a String extension using predicate so you can call string.isEmail 这是正确答案的两个最受好评的答案的融合:使用谓词的String扩展,因此您可以调用string.isEmail
extension String {var isEmail: Bool {let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,20}" let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)return emailTest.evaluateWithObject(self)}}
如何快速验证电子邮件地址?相关推荐
- php验证电子邮件,如何在PHP中验证电子邮件地址
冉冉说 检查电子邮件地址是否格式良好的最简单和最安全的方法是使用filter_var()职能:if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { // ...
- 如何在JavaScript中验证电子邮件地址
如何在JavaScript中验证电子邮件地址? #1楼 与squirtle相比 ,这是一个复杂的解决方案,但是在正确验证电子邮件方面做得非常出色: function isEmail(email) { ...
- POSIX正则表达式 验证电子邮件地址
我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用"正则表达式"(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有 ...
- 我应该如何验证电子邮件地址?
本文翻译自:How should I validate an e-mail address? What's a good technique for validating an e-mail addr ...
- html5验证电子邮件地址,大家都知道如何吗?
一个新值类型属性是电子邮件.使用这种类型的字段而不是一般的文本字段浏览器使用正则表达式来检查用户已经事实上输入一个电子邮件地址.这是否意味着用户不能输入一个虚假的电子邮件地址吗?没有.但你不必担心用户 ...
- 如何使用正则表达式验证电子邮件地址
电子邮件正则表达式模式 ^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$ ...
- python使用正则验证电子邮件_如何使用正则表达式验证电子邮件地址?
在完全RFC 822标准的正则表达式是低效的和模糊的,因为它的长度.幸运的是,RFC 822被取代了两次,目前的电子邮件地址规范是RFC 5322.RFC 5322导致正则表达式,如果研究几分钟并且对 ...
- php 邮件验证_PHP程序来验证电子邮件地址
php 邮件验证 Suppose there is a form floating where every user has to fill his/her email ID. It might ha ...
- 3种在JavaScript中验证电子邮件地址的方法
来源 | http://www.fly63.com/ 如何使用JavaScript验证email的正确性?今天这个内容将做一个小小的总结,希望对你有所帮助. 方式一:简单验证 对于想要以以下形式进行真 ...
最新文章
- 转PET灌装机的完善
- [待总结]各种中文乱码分析与处理:数据库、eclipse、linux to windows、web应用
- php框架laravel:数据库建立:artisan
- 《iOS应用逆向工程(第2版)》高清电子书 PDF
- 手机连接投影机的步骤_家用投影仪如何安装 家用投影仪安装方法【步骤详解】...
- 全奖博士招生,荷兰根特大学 ​IDLab 实验室,手语手势识别方向
- 技巧 | 数据有缺失值情况下的一个处理方法
- 如何编写内联if语句用于打印?
- AWK学习笔记五:可执行AWK程序
- java生成16位唯一性的订单号
- 华为设备MSTP配置命令
- 〖Python APP 自动化测试实战篇④〗- 通过 appium 驱动夜神模拟器完成第一个自动化脚本 - 查看通讯录
- 可视为线性回归的曲线回归(R语言)
- 【Beta】Scrum Meeting 7 与助教谈话
- 数据驱动 - ddt
- Java毕设答辩会问些什么?
- 权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC
- TFmini Plus在开源飞控PX4上的应用
- 手机模拟器之争:Genimotion在左,海马玩在右
- Oracle AWR报告详细分析