有如下正则表达式:
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$
使用如上正则表达式验证的时候发现没有达到自己想要的效果,那是因为上面的\d会被当成转义字符来对待,XCode警告Unknown escape sequence '\d',如下:
最后po如上字符串的时候发现po出来的是^(?=.*d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$,少了\正因为如此,所以正则的校验就不成功了。
解决办法,就是在\d前面再加个\,不让他转义,如下:
NSString *regularStr = @"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,18}$";
这样正则的校验就正确了。