密码验证的正则表达式 - 目标C.

时间:2017-04-07 06:24:24

标签: ios objective-c nsregularexpression

我需要一个可以验证以下情况的正则表达式,

  • 8到20个字符
  • 使用至少1个大写字母,1个小写字母和1个数字
  • 连续3次以上不重复相同的数字或字母
  • 不包含空格,并且只能使用这些字符 @#*()+ = {} /? 〜; ,。 - _

我能找到的最接近的解决方案是

^(?=.*[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;

}

0 个答案:

没有答案