我想在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)
这总是回归真实.我没有弄到这个错误.
如何使用正则表达式:
-(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)
使用正则表达式,您可以创建不同的规则,但这可以为您提供一个先机,
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |