ios - 如何快速验证电子邮件地址?

标签 ios swift validation email nsregularexpression

有人知道如何在 Swift 中验证电子邮件地址吗?我找到了这段代码:

- (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;
    }
}

但我无法将其翻译为 Swift。

最佳答案

我会使用NSPredicate :

func isValidEmail(_ email: 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: email)
}

对于 3.0 之前的 Swift 版本:

func isValidEmail(email: 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: email)
}

对于 1.2 之前的 Swift 版本:

func isValidEmail(email: 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(email)
    }
    return false
}

关于ios - 如何快速验证电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37023664/

相关文章:

ios - UINavigationController 和 UINavigationItem 的辅助功能

ios - 键盘扩展名未出现在键盘列表中

swift - 如何使用 SpriteKit 创建一堵墙?

html - 验证:元素链接上的属性 rel 首先是错误值

javascript - 在 JQuery Validator 提交处理程序中重置表单值

wpf - ValidateWithoutUpdate 永远不会执行配置的 ValidationRules?

ios - 如何在 Swift 中观察多个节点中的 Firebase 子值变化?

ios - 从单独的 .XIB 获取 UITextField 数据 - Swift/XCode

ios - 在 Swift 中使用 PFQueryTableViewController(来自解析)

swift - 获取 CGFloat 类型的第一个数字