iOS 中密码字段的字母数字验证

Alphanumeric Validation for password fields in iOS

在我的 iOS 项目中,我想验证密码,我应该接受严格由字母数字组成的密码,即密码必须同时包含字母和数字,我通过以下方法完成了此操作,但是它把数字作为可选的,它看起来很简单但是它占用了我的时间,请帮助我

NSError *error = NULL;
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-z0-9]*"
                                                                               options:NSRegularExpressionCaseInsensitive
                                                                                 error:&error];
        NSArray *matches = [regex matchesInString:input
                                          options:0
                                            range:NSMakeRange(0, [input length])];

        if([matches count] > 0)
        {
            // Valid input
            return true;
        }
        else
        {
            return false;
        }

使用 NSCharacterSet 而不是正则表达式,

    private func containsOnlyNumbers(number:String)-> Bool
    {
        let numberCharSet = NSCharacterSet(charactersInString: "0123456789")
        let stringAfterRemovingNumbers = number.stringByTrimmingCharactersInSet(numberCharSet)
        return (stringAfterRemovingNumbers.characters.count==0)//string contains only numbers if it has zero charecters after removing numbers from it
    }

你可以的。

NSString *pass= @"hRj4fg2";
NSString    *regex     = @"^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d]*$";//@"^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]*$";//Both will work
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL isValidPassword = [predicate evaluateWithObject:pass];
NSLog(@"isValidPassword:%d",isValidPassword);

结果:

hRj4fg2* 无效

hRj4fg2 有效

shkdskd 无效

1234545 无效

jam56h&jk 无效

你的代码看起来不错,你应该试试这个模式:

^(?=.*[a-z])(?=.*\d)[a-z\d]*$

确保输入至少包含一个字母和一个数字,并且只接受字母数字组合。

Regex Demo

示例代码:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^(?=.*[a-z])(?=.*\d)[a-z\d]*$"
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];
NSArray *matches = [regex matchesInString:input
                                  options:0
                                    range:NSMakeRange(0, [input length])];

if([matches count] > 0)
{
    // Valid input
    return true;
}
else
{
    return false;
}

希望对您有所帮助!