我知道有很多问题需要这个,但是没有确切的问题,试图找到验证密码的正确方法是问题,使用现有问题的答案并不能解决我的问题。
我的密码需要至少有一个特殊字符,但正则表达式不接受点"。",文字是一个点,所以,我需要放置什么才能验证点?
我使用这个,最少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符,最多15个字符:
let passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[!#$%&? \"]).*(?=.*[0-9])[A-Za-z\\d$@$#!%*?&]{8,15}$"
这个不接受点:(?=.*[!#$%&? \"]).*
答案 0 :(得分:3)
我的建议:不要使用正则表达式来解决这个问题。最好为每条规则使用NSPredicate
,这样您(和其他人)就能理解您在做什么
// 8 to 15 characters
if 8 <= text.count <= 15 {
// Uppercase
if NSPredicate(format:"SELF MATCHES %@", ".*[A-Z]+.*").evaluate(with: text) {
// Lowercase
if NSPredicate(format:"SELF MATCHES %@", ".*[a-z]+.*").evaluate(with: text) {
// Number
if NSPredicate(format:"SELF MATCHES %@", ".*[0-9]+.*").evaluate(with: text) {
// Special Character
if NSPredicate(format:"SELF MATCHES %@", ".*[^a-zA-Z0-9]+.*").evaluate(with: text) {