ios - 使用正则表达式的 Xcode/swift 密码验证

标签 ios regex swift xcode

我刚刚听说这个正则表达式,正在努力让它发挥作用。

我的代码:

func isPasswordValid(_ Password : String) -> Bool{
    let Password = NSPredicate(format: "SELF MATCHES %@", "^(?=.*[A-Z](?=.*[0-9].{>8}$")
    return Password.evaluate(with: Password)
}

@IBAction func Register(_ sender: UIButton) {
    if Username.text == "" {
        Error.text = "Email må ikke være tom";
    }
    if Username.text != "" {
        Error.text = ""
    }
    if Password.text == "" {
        Error2.text = "Password må ikke være tom"
    }
    if Password.text != "" {
        Error2.text = ""
    }
    if Password.text != repeatPassword.text || repeatPassword.text == "" {
        Error3.text = "Password skal være det samme"
    }
    if Password.text == repeatPassword.text && repeatPassword.text != "" {
        Error3.text = ""
    }
    if Password.text! == repeatPassword.text && Username.text != "" {
        Auth.auth().createUser(withEmail: Username.text!, password: Password.text!) { (User, Error) in
            self.performSegue(withIdentifier: "goToSignIn", sender: self)
        }
    }

}

当我运行它时,它会在返回状态下创建一个断点。我想我需要什么? 谁能帮忙?

最佳答案

func isPasswordValid(_ Password : String) -> Bool{
    let Password = NSPredicate(format: "SELF MATCHES %@", "^(?=.*[A-Z](?=.*[0-9].{>8}$")
    return Password.evaluate(with: Password)
}

我怀疑你的函数参数与谓词变量名冲突,试试这个:

func isPasswordValid(_ password : String) -> Bool{
    let predicate = NSPredicate(format: "SELF MATCHES %@", "^(?=.*[A-Z](?=.*[0-9].{>8}$")
    return predicate.evaluate(with: password)
}

@IBAction func Register(_ sender: UIButton) {

    let username = self.username.text.flatMap { $0.isEmpty ? nil : $0 }
    let password = self.password.text.flatMap { $0.isEmpty ? nil : $0 }
    let repeat = self.repeatPassword.text.flatMap { $0 == password }

    error.text = username == nil ? "Email må ikke være tom" : ""
    error2.text = password == nil ? "Password må ikke være tom" : ""
    error3.text = repeatPassword == nil ? "Password skal være det samme" : ""

    guard username != nil, repeat != nil else { return }

    Auth.auth().createUser(withEmail: username!, password: password!) { (user, error) in
        self.performSegue(withIdentifier: "goToSignIn", sender: self)
    }
}

关于ios - 使用正则表达式的 Xcode/swift 密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46470118/

相关文章:

ios swift : Is it possible to change the font style of a certain word in a string?

c# - 使用 regex + c# 限制邮件地址的最大长度

用于从句子中删除前导和尾随回车和换行的正则表达式

正则表达式仅捕获 1 个空格,除非被特定模式包围

ios - Swift 中的 Double to String 错误

iphone - 键盘没有出现,facebook sdk

ios - 如何在 Swift 的 NSUserDefault 中存储数组?

ios - ReactiveCocoa subscribeNext 用于 Swift 中的 Optionals

swift - 在 map 上画圈不会显示

ios - 如何确保我的 for in 循环使我只能执行一个 segue?