电子邮件验证Swift 2



我如何限制用户输入电子邮件地址到Textfield。问题是,我的警报未显示,只需注册即可在没有检查电子邮件字段的情况下

if ( username.isEmpty || email.isEmpty || password.isEmpty || phonenumper.isEmpty) {
    let alert = UIAlertController(title: "Sign Up Failed!", message:"Please enter your data for Signup", preferredStyle: .Alert)
    alert.addAction(UIAlertAction(title: "OK ", style: .Default) { _ in })
    self.presentViewController(alert, animated: true){}
}
else {
    if (isValidEmail(UserEmailTextFiled.text!)) {
        let alert = UIAlertController(title: "Inviled Email", message:"Please enter your Email", preferredStyle: .Alert)
        alert.addAction(UIAlertAction(title: "OK ", style: .Default) { _ in })
        self.presentViewController(alert, animated: true){}
    }else{
    //code
    }
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 : false
        return result
    }

根据您已发布的代码,if (isValidEmail(UserEmailTextFiled.text!)) {...表示如果电子邮件为有效,则会显示无效的电子邮件警报。您只需要用! if (!isValidEmail(UserEmailTextFiled.text!)) {

逆转结果
public func isValidEmailAddress() -> Bool {
    let emailRegex = "^[\w!#$%&'*+/=?`{|}~^-]+(?:\.[\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}$"
    return NSPredicate(format: "SELF MATCHES %@", emailRegex).evaluate(with: self)
}

这是带有正则速度的Swift 3.0 Func。只需复制/粘贴在助手或扩展文件中,然后使用它。

在Swift 3.0

extension  String {
    func nsstring () -> NSString {
        return (self as NSString)
    }
    func isValidEmailAddress () -> Bool
    {
        var returnValue = true
        let emailRegEx = "[A-Z0-9a-z.-_]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,3}"
        do {
            let regex = try NSRegularExpression(pattern: emailRegEx)
            let results = regex.matches(in: self.trimmingCharacters(in: .whitespacesAndNewlines), range: NSRange(location: 0, length: self.characters.count))
            if results.count == 0
            {
                returnValue = false
            }
        }
        catch let error as NSError
        {
            print("invalid regex: (error.localizedDescription)")
            returnValue = false
        }
        return  returnValue
    }    
}

在ViewController

let isValidEmail = yourtextField?.text?.isValidEmailAddress()
if isValidEmail!
{ 
 //Code Here
}
else
{
 //Error Code Here
}

Swift 3.0

中的电子邮件验证
@IBOutlet weak var emailid: UILabel!
@IBOutlet weak var MsgAlrtEmailId: UILabel!
@IBAction func Register(_ sender: Any)
    {
        //email
        let providedEmailAddress = emailid.text
        let isEmailAddressValid = isValidEmailAddress(emailAddressString: providedEmailAddress!)
        if isEmailAddressValid
        {
            print("Email address is valid")
            MsgAlrtEmailId.text = "Email Address is valid"
            MsgAlrtEmailId.sizeToFit()
            MsgAlrtEmailId.textColor = UIColor.blue
        } else {
            print("Email address is not valid")
            MsgAlrtEmailId.text = "Email Address Not valid"
            MsgAlrtEmailId.sizeToFit()
           MsgAlrtEmailId.textColor = UIColor.red
        }
  //email rule validation
        func isValidEmailAddress(emailAddressString: String) -> Bool {
            var returnValue = true
            let emailRegEx = "[A-Z0-9a-z.-_]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,3}"
            do {
                let regex = try NSRegularExpression(pattern: emailRegEx)
                let nsString = emailAddressString as NSString
                let results = regex.matches(in: emailAddressString, range: NSRange(location: 0, length: nsString.length))
                if results.count == 0
                {
                    returnValue = false
                }
            } catch let error as NSError {
                print("invalid regex: (error.localizedDescription)")
                returnValue = false
            }
            return  returnValue
        }

最新更新