我刚刚听说这个正则表达式,正在努力让它发挥作用。
我的代码:
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/