确保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;
}发布于 2015-06-08 07:23:47
您可以通过一种更简单的方法来完成此操作,方法是创建自己的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
}发布于 2015-06-08 08:31:05
我不确定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;
}https://stackoverflow.com/questions/30699407
复制相似问题