Swift正则表达式用法

时间:2015-09-04 16:56:35

标签: ios regex swift nsregularexpression

我无法将此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修改表达式而没有运气。

任何人都可以发现正则表达式中的缺陷吗?

2 个答案:

答案 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';

DEMO

enter image description here