【问题标题】:Password validation in UITextfield input for password validation in iOS用于 iOS 中密码验证的 UITextfield 输入中的密码验证
【发布时间】:2014-02-12 02:33:15
【问题描述】:

我想从具有以下要求的文本字段中验证我的密码。

  1. 密码必须包含一个大写字母和一个小写字母。
  2. 不允许使用特殊字符。

我试过[[NSCharacterSet symbolCharacterSet] characterIsMember:(my character to be tested],但它并不适用于所有角色。

如果可能,请向我推荐正则表达式的解决方案,谢谢。

【问题讨论】:

  • special character 在您的情况下代表什么?
  • 附带说明,作为最终用户,我绝对讨厌任意密码限制。我正常的、不受限制的密码比我受限制时使用的要强得多,而且我能记住我的不受限制的密码比受限制的密码好得多。相反,您应该鼓励用户使用密码短语而不是密码,并考虑包含一定数量的“1337 5p34k”而不绝对需要任何特定限制。
  • 在我的情况下,特殊字符是除英文字母sw(大写和小写)和数字0-9之外的所有字符

标签: ios regex validation passwords uitextfield


【解决方案1】:

试一试。

- (BOOL)isPasswordValid:(NSString *)password
{
    NSCharacterSet * characterSet = [NSCharacterSet uppercaseLetterCharacterSet] ;
    NSRange range = [password rangeOfCharacterFromSet:characterSet] ;
    if (range.location == NSNotFound) {
        return NO ;
    }
    characterSet = [NSCharacterSet lowercaseLetterCharacterSet] ;
    range = [password rangeOfCharacterFromSet:characterSet] ;
    if (range.location == NSNotFound) {
        return NO ;
    }

    characterSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"] ;
    for (NSUInteger i = 0; i < [password length]; ++i) {
        unichar uchar = [password characterAtIndex:i] ;
        if (![characterSet characterIsMember:uchar]) {
            return NO ;
        }
    }
    return YES ;
}

【讨论】:

  • @user3153608 不客气,如果有帮助请采纳答案:)
【解决方案2】:

对于大写和小写,您可以使用以下代码:

[[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[myString characterAtIndex:0]];

对于特殊字符,您可以使用以下代码:

if ([aString isMatchedByRegex:@"[^a-zA-Z0-9]"]) {
  NSLog(@"This string contains illegal characters");
}

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2020-11-23
    • 2016-03-02
    • 2011-01-24
    相关资源
    最近更新 更多