Swift 正则表达式用法
Swift regular expression usage
我无法将此 Java 正则表达式转换为 swift:
^(?=.[a-z])(?=.[A-Z])(?=.*\d).{6,15}$
它基本上检查输入至少有一个大写字母,至少有一个数字,最小长度为 6 个字符,最大长度为 15。
要检查的输入来自 UITextField ,我有这个功能要检查:
func isValidPassword(candidate: String) -> Bool {
let passwordRegex = "(?=.[a-z])(?=.[A-Z])(?=.*\d).{6,15}"
return NSPredicate(format: "SELF MATCHES %@", passwordRegex).evaluateWithObject(candidate)
}
然后,按照我的逻辑,我会做这样的事情:
if isValidPassword(textField.text) {
println("password is good")
} else {
println("password is wrong")
}
我总是收到错误的密码日志。
我什至尝试用这个 Cheat Sheet 修改表达式,但没有成功。
任何人都可以发现正则表达式中的缺陷吗?
我认为你的正则表达式是错误的。它应该是 (?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}
- 注意 [a-z]
之前和 [A-Z]
之前的 *
。它遵循您已应用于数字组的相同原则。
这仍然不符合您的描述,因为它也强制使用小写字母。您可能想删除第一个 (?=)
组或更改您的期望/描述。
您的正则表达式有误,请使用以下正则表达式:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}$
我无法将此 Java 正则表达式转换为 swift:
^(?=.[a-z])(?=.[A-Z])(?=.*\d).{6,15}$
它基本上检查输入至少有一个大写字母,至少有一个数字,最小长度为 6 个字符,最大长度为 15。
要检查的输入来自 UITextField ,我有这个功能要检查:
func isValidPassword(candidate: String) -> Bool {
let passwordRegex = "(?=.[a-z])(?=.[A-Z])(?=.*\d).{6,15}"
return NSPredicate(format: "SELF MATCHES %@", passwordRegex).evaluateWithObject(candidate)
}
然后,按照我的逻辑,我会做这样的事情:
if isValidPassword(textField.text) {
println("password is good")
} else {
println("password is wrong")
}
我总是收到错误的密码日志。
我什至尝试用这个 Cheat Sheet 修改表达式,但没有成功。
任何人都可以发现正则表达式中的缺陷吗?
我认为你的正则表达式是错误的。它应该是 (?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}
- 注意 [a-z]
之前和 [A-Z]
之前的 *
。它遵循您已应用于数字组的相同原则。
这仍然不符合您的描述,因为它也强制使用小写字母。您可能想删除第一个 (?=)
组或更改您的期望/描述。
您的正则表达式有误,请使用以下正则表达式:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,15}$