如何在电子邮件文本字段中为rahul.123@clicksabcd.com使用正则表达式?

时间:2018-02-20 05:37:34

标签: regex swift email-validation

我正在使用此代码验证电子邮件文本字段。

static func validateEmail(candidate: String) -> Bool {
        let emailRegex = "[A-Z0-9a-z._]+@[A-Za-z]+.[A-Za-z]{1,35}"
        return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: candidate)
    }

但是当我输入“rahul.123@clicksabcd.com”时,该应用程序将冻结。我不知道如何在iOS中使用正则表达式。

3 个答案:

答案 0 :(得分:0)

将此类方法用于电子邮件验证...

 class func isValidEmail(_ strEmail:String) -> Bool {

    let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
    if(!strEmail.isEmpty){
        if(strEmail[strEmail.startIndex] == "."){

            return false
        }else{

            let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
            return emailTest.evaluate(with: strEmail)
        }
    }else{
        return false
    }
}

您可以将此方法用作

ValidationClass.isValidEmail(userEmail!)

...谢谢

答案 1 :(得分:0)

Swift 4.0

您可以在String extension中编写电子邮件验证功能,如下所示。

extension String {

   func isValidEmail() -> Bool {
       let regex = try? NSRegularExpression(pattern: "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$", options: [.caseInsensitive])

       return regex?.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, self.count)) != nil
    } 
}

你可以像下面这样使用它。

var email = "mrvora@gmail.com"

if email.isValidEmail() {
   //correct email
}

答案 2 :(得分:0)

试试这个..!

 extension String {
    func isEmail() -> Bool {
         let expression = try! NSRegularExpression(pattern: "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$", options: [.caseInsensitive])

        return expression.firstMatch(in: self, options: NSRegularExpression.MatchingOptions(rawValue: 0), range: NSMakeRange(0, characters.count)) != nil
     }
 }

在游乐场测试:

var str = "rahul.123@clicksabcd.com"
var str2 = "rahul.123@clicksabcd32com"

str.isEmail()  //true
str2.isEmail() //false