iOS正则的一个小坑


我们有如下的一个正则,用来校验密码。
之前是@"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,32}$",最开始的那个[0-9]是\d,@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,32}$"发现老是校验不通过,最后测试发现是iOS系统会认为你要将\d默认替换一个数字,但是这个数字又没有,导致报错。最后改为[0-9]就OK了。

//密码长度相等,并且满足(密码长度8-32位,须包含数字、小写字母、大写字母)
    NSString *regex = @"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,32}$";
    NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    BOOL valid = [pre evaluateWithObject:pass];

你可能感兴趣的:(iOS正则的一个小坑)