我无法将此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修改表达式而没有运气。
任何人都可以发现正则表达式中的缺陷吗?
答案 0 :(得分:3)
我认为你的正则表达式是错误的。它应该是*
- 在[a-z]
之前和[A-Z]
之前注意(?=)
。它遵循您已应用于数字组的相同原则。
仍然不适合您的描述,因为它也会强制使用小写字母。您可能希望删除第一个import module
functionsList = [o for o in getmembers(module) if isfunction(o[1])]
组或更改您的期望/说明。
答案 1 :(得分:2)
您的正则表达式错误,请使用以下正则表达式:
var myObject = {
prop:'something';
callme:function () {
console.log('you called me');
}
}
firstObj = myObject;
firstObj.prop1 = 'new thing';
secondObj = myObject;
secondObj.prop1 = 'second thing';