专栏首页Guangdong QiOC 密码验证(正则+连续输入+输入过于简单判断)

OC 密码验证(正则+连续输入+输入过于简单判断)

昨天项目上线了,上线之前老板提出一个要求,登陆密码不能设置过于简单的,不能输入连续的字符,没办法,加班改吧

思路:

1、正则:

正则表达式不用说,百度一搜一大堆,别告诉我不会搜,这我可帮不了你,好吧还是帮帮你吧度娘的百度一下你就知道(只能帮到这里了,别的真帮不到你了)

2、连续输入:

我们怎么判断连续输入呢,连续输入也就是如下样式

111111

qqqqqq

ZZZZZZ

判断这个连续输入有两种办法,一在文本输入框的代理方法中TextFieldDelegate

也就是下面那哥们

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

二自己计算字符串,也就是截取字符串,比较字符串,我们来说一下这个怎么截,怎么算

我们先定义一个count  这个用于判断几个有几个相同的字符串了,然后我们开始截取字符串

屁话不多说了,直接贴上代码吧

注释已经很详细了,就不做过多的解释

3、输入过于简单:

什么叫输入过于简单呢,我的理解就是什么  111111  123456  654321  等,这个我们做字符串比较就可以了

总结:

把如上方法写成一个类方法,就能完成功能了,下面我贴出代码

 + (BOOL) password:(NSString *)password

 {
 NSString *pattern = @"[a-zA-Z0-9]{6,19}+$";
 NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
 BOOL isMatch = [pred evaluateWithObject:password];
 if (isMatch) {
 int count = 0;
 NSString *newPassword = [password substringToIndex:1];
 for (int i = 0; i < password.length; i++) {
 NSString *newPassword1;
 if (i == 0) {
 newPassword1 = [password substringToIndex:i + 1]; //当 i 为 0 的时候  取下表为 1 的字符串
 }else{
 //当 i 大于 0 时 我们取下标为 i + 1 新的string.length 为 i 个 所有我们再从后面往前面取
 newPassword1 = [[password substringToIndex:i + 1] substringFromIndex:i];
 }
 if ([newPassword1 isEqualToString:newPassword]) {
 count++;
 }
 }
 if (count == password.length) {
 return NO; // 这里说明 count个相同的字符串,也就是所有密码输入一样了
 }
 if ([password isEqualToString:@"123456"] ||
 [password isEqualToString:@"qwerty"] ||
 [password isEqualToString:@"654321"]) return NO;
 }
 return isMatch;
 }
 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 黑技术之百度网盘大文件下载直奔主题

    GuangdongQi
  • iOS 图标图像 (官方翻译版)

    GuangdongQi
  • iOS开发常用之UI下拉刷新

    GuangdongQi
  • flash werkzeug计算和验证密码(flask 68)

    from werkzeug.security import generate_password_hash, check_password_hash

    用户5760343
  • ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this st

    这是MySQL 5.6之后会出现的问题。因为MySQL的安全设置,你如果不修改密码,那么MySQL就不让你操作任何东西。

    用户2353021
  • mysql设置用户密码规则

    小小咸鱼YwY
  • 编写地道的Go代码

    最地道的Go代码就是Go的标准库的代码,有空的时候可以多看看Google的工程师是如何实现的。 1. 注释 可以通过/* ... */或者//增加注释, //之...

    李海彬
  • 聊聊artemis的SessionConsumerFlowCreditMessage

    本文主要研究一下artemis的SessionConsumerFlowCreditMessage

    codecraft
  • Maven项目Spring整合RocketMQ消费者实现

    RocketMQ是阿里巴巴在2012年开源的分布式消息中间件,目前已经捐赠给Apache基金会,已经于2016年11月成为 Apache 孵化项目,相信Rock...

    麦克劳林
  • 聊聊artemis的SessionConsumerFlowCreditMessage

    本文主要研究一下artemis的SessionConsumerFlowCreditMessage

    codecraft

扫码关注云+社区

领取腾讯云代金券