我需要一个可以验证以下情况的正则表达式,
我能找到的最接近的解决方案是
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z])(?=.*[@(#*){+=}/?~;,._]).{8,20}$
但包含以下问题,
-
字符编辑:修复了重复的字符问题,并使用最终表达式
^(?!.*?(.)\1{3})(?!.* )(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*[:£€&"!'[\]%^\|<>$]).{8,20}$
但它只能在[RegExr] [1]上进行在线测试 我尝试了下面的代码,但它生成了运行时
- (BOOL)string:(NSString *)text matches:(NSString *)pattern{
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSArray *matches = [regex matchesInString:text options:0 range:NSMakeRange(0, text.length)];
return matches.count > 0;
}