我有一个包含用户名字段的 UITextfield,然后我想添加一个验证,以便用户无法键入不同于字母、数字和“_-”的用户名。标点符号。我正在尝试使用 NSCharacterset 来做到这一点,但没有成功。
NSScanner *scanner = [NSScanner scannerWithString:username];
NSCharacterSet *letterCharacterSet = [NSCharacterSet letterCharacterSet];
NSCharacterSet *decimalDigitCharacterSet = [NSCharacterSet decimalDigitCharacterSet];
NSCharacterSet *customPunctuationCharacterSet = [NSCharacterSet characterSetWithCharactersInString:@"_-."];
if (![scanner scanCharactersFromSet:letterCharacterSet intoString:NULL] &&
![scanner scanCharactersFromSet:customPunctuationCharacterSet intoString:NULL]&&
![scanner scanCharactersFromSet:decimalDigitCharacterSet intoString:NULL]){
*error = [ScreenValidation createNSError:1 message:@"You can only use letters, numbers and punctuation marks."];
return NO;
}
我意识到上述代码的结果不正确,据我所知,我要做的就是将所有 NSCharacterSet 连接成一个来执行验证。有谁知道一个优雅的解决方案,当然,它适用于多个位置。
非常感谢和问候, 马科斯