验证密码至少有一个点

时间:2018-02-05 14:15:37

标签: ios regex swift validation

我知道有很多问题需要这个,但是没有确切的问题,试图找到验证密码的正确方法是问题,使用现有问题的答案并不能解决我的问题。

我的密码需要至少有一个特殊字符,但正则表达式不接受点"。",文字是一个点,所以,我需要放置什么才能验证点?

我使用这个,最少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符,最多15个字符:

let passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[!#$%&? \"]).*(?=.*[0-9])[A-Za-z\\d$@$#!%*?&]{8,15}$"

这个不接受点:(?=.*[!#$%&? \"]).*

1 个答案:

答案 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) {