首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用REGEX与目标C(密码用例)进行字符串验证

使用REGEX与目标C(密码用例)进行字符串验证
EN

Stack Overflow用户
提问于 2018-04-27 07:42:13
回答 1查看 90关注 0票数 1

我试图通过使用objective使用regex来验证密码。我已经搜索了关于这个主题的大约4-5个不同的堆栈溢出答案,由于某种原因,它仍然给了我相同的结果。

字符串需要包含以下最小值:

  • 字符串{8, 20 }中的8个字符(最多20个字符)
  • 1大写字符A-Z
  • 1小写字符a-z
  • 1号0-9!它们的顺序必须是非特定的。

这也可能是一个逻辑错误,它会撕裂我的灵魂,花了几个小时在这上面。我“相当”肯定它不是但是好..。可能会吧。

这里是我的验证函数:

代码语言:javascript
复制
- (BOOL) validPassword:(NSString *) passwordString {
    NSString *passwordRegex = @"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8,20}"; //regex string condition
    NSPredicate *passwordValidation = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordRegex];
    return [passwordValidation evaluateWithObject:passwordRegex];
}

这里我调用函数:

代码语言:javascript
复制
if (![self validPassword:self.passwordTextField.text]) { //if password is invalid
        //display feedback to user
    } else { //if password is valid
        //create a user
    }

提前谢谢你!

干杯,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 08:37:27

您正在检查模式是否与其自身兼容,而不是检查密码:

代码语言:javascript
复制
return [passwordValidation evaluateWithObject:passwordRegex];

=>

代码语言:javascript
复制
return [passwordValidation evaluateWithObject:passwordString];

如果您以不同的方式命名变量:

代码语言:javascript
复制
- (BOOL)validPassword:(NSString *)stringToValidate {
    NSString *pattern = @"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{8,20}"; //regex string condition
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    return [predicate evaluateWithObject:stringToValidate];
}

这可能会更明显。

由于您使用的是一个小方法,其中包含两个var &1个params,因此从相同的序列(_password_FollwedBySomething)开始命名您的变量,因此很难看出当您将其中一个变量放错位置时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50057668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档