需求:8-16位 / 必须同时包含英文和数字
正则:^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$
- (?![0-9]+$) 预测该位置后不全是数字
- (?![a-zA-Z]+$) 预测该位置后面不全是字母
- [0-9A-Za-z] {8,16} 由8-16位数字或这字母组成
判断方法如下:
- (BOOL)isStandardPassword {
NSString * regex = @"^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [pred evaluateWithObject:self];
}
如果需要同时包含大小写英文和数字:
regex = @"^(?![0-9]+$)(?![0-9A-Z]+$)(?![0-9a-z]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";