验证UITextField中的字母数字值

Cha*_*hav 5 objective-c ios7

我想在textfield中输入字母数字值.如果用户只输入字符或数字,则发送按钮.即使没有特殊字符可以接受.

        NSString *str = askIdTxt.text;
        NSCharacterSet *alphanumericSet = [NSCharacterSet alphanumericCharacterSet];
        NSCharacterSet *numberSet = [NSCharacterSet decimalDigitCharacterSet];
        BOOL isAlphaNumericOnly = [[str stringByTrimmingCharactersInSet:alphanumericSet] isEqualToString:@""] && ! [[str stringByTrimmingCharactersInSet:numberSet] isEqualToString:@""];
        if (isAlphaNumericOnly) {
             NSLog(@"isAplhaNumericOnly: %@",(isAlphaNumericOnly? @"Yes":@"No"));
        }
Run Code Online (Sandbox Code Playgroud)

这总是回归真实.我没有弄到这个错误.

Luk*_*ela 6

如何使用正则表达式:

-(BOOL)isAlphaNumericOnly:(NSString *)input 
{
    NSString *alphaNum = @"[a-zA-Z0-9]+";
    NSPredicate *regexTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", alphaNum];

    return [regexTest evaluateWithObject:input];
}
Run Code Online (Sandbox Code Playgroud)

然后使用它

if([self isAlphaNumeric:str])
{
    NSLog(@"IT IS ALPHA NUMERIC STRING");

}
Run Code Online (Sandbox Code Playgroud)

编辑 相同的技术可用于验证密码,您只需要更好的正则表达式:

-(BOOL)isPasswordStrong:(NSString *)password {
/*
8-20 chars
at least one letter
at least one number OR special character
no more than 3 repeated characters
*/
        NSString *strongPass= @"^(?!.*(.)\\1{3})((?=.*[\\d])(?=.*[A-Za-z])|(?=.*[^\\w\\d\\s])(?=.*[A-Za-z])).{8,20}$";;
        NSPredicate *regexTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", strongPass];

        return [regexTest evaluateWithObject:password];
}
Run Code Online (Sandbox Code Playgroud)

使用正则表达式,您可以创建不同的规则,但这可以为您提供一个先机,