gpt4 book ai didi

ios - 在 iOS Swift 上使用 RegEx 验证密码

转载 作者:行者123 更新时间:2023-11-28 07:21:57 24 4
gpt4 key购买 nike

我需要根据以下要求验证用户密码:

  • 8 个或更多字符。

  • 包含 1 个字符和 1 个数字

  • 可以输入字母、数字和符号

有谁知道我如何使用 RegEx 完成此操作?

我已经尝试自己解决这个问题,但到目前为止我没有尝试过。我最近尝试的代码如下。

func isPasswordHasEightCharacter(password: String) -> Bool {
let passWordRegEx = "^.{8,}$"
let passwordTest = NSPredicate(format: "SELF MATCHES %@", passWordRegEx)
return passwordTest.evaluate(with: password)
}

func isPasswordHasNumberAndCharacter(password: String) -> Bool {
let passRegEx = "^(?=.*[a-z])(?=.*[0-9])"
let passwordTest = NSPredicate(format: "SELF MATCHES %@", passRegEx)
return passwordTest.evaluate(with: password)
}

func isPasswordHasNumberAndCharacterSign(password: String) -> Bool {
let passWordRegEx = "^(?!.[^a-zA-Z0-9@#${'$'}^+=])"
let passwordTest = NSPredicate(format: "SELF MATCHES %@", passWordRegEx)
return passwordTest.evaluate(with: password)
}

最佳答案

在这个解决方案中,每个需求都被单独检查以避免复杂的正则表达式。该解决方案支持 ôöệż 等字符的变体

func validatePassword(_ password: String) -> Bool {
//At least 8 characters
if password.count < 8 {
return false
}

//At least one digit
if password.range(of: #"\d+"#, options: .regularExpression) == nil {
return false
}

//At least one letter
if password.range(of: #"\p{Alphabetic}+"#, options: .regularExpression) == nil {
return false
}

//No whitespace charcters
if password.range(of: #"\s+"#, options: .regularExpression) != nil {
return false
}

return true
}

一些测试用例

print(validatePassword("abc"))        // --> false
print(validatePassword("abcdefgh")) // --> false
print(validatePassword("abcde fgh1")) // --> false
print(validatePassword("abcdefgh1")) // --> true
print(validatePassword("abcåäö123")) // --> true
print(validatePassword("ABC123€%&")) // --> true
print(validatePassword("@èệżôøö123")) // --> true

关于ios - 在 iOS Swift 上使用 RegEx 验证密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57771505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com