iOS-问题:正则表达式转义字符:-

207 阅读1分钟

有如下正则表达式:

强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 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}$";

这样正则的校验就正确了。