确保NSString仅包含字母a-z和A-Z的最佳方法是什么。
我尝试过以下代码,但由于某些原因它无法运行:
NSString *myegex = @"[A-Za-z]";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", myregex];
if (![emailTest evaluateWithObject:self.initials.text]) {
// print error
return;
}
答案 0 :(得分:11)
您可以通过创建自己的NSCharacterSet
然后使用rangeOfCharacterFromSet:
//Create character set
NSCharacterSet *validChars = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"];
//Invert the set
validChars = [validChars invertedSet];
//Check against that
NSRange range = [myString rangeOfCharacterFromSet:validChars];
if (NSNotFound != range.location) {
//invalid chars found
}
答案 1 :(得分:0)
我不确定Objective-C正则表达式引擎是如何工作的,但您可以利用锚点^
和$
来检查字符串是否以字母开头并使用此正则表达式完成:
^[A-Za-z]+$
使用您的代码,将是:
NSString *myegex = @"^[A-Za-z]+$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", myregex];
if (![emailTest evaluateWithObject:self.initials.text]) {
// print error
return;
}