我想要一个可以包含
的名字的正则表达式1)的字母 2)空间 3)撇号
Exp:Raja,Raja reddy,Raja's,
我使用了这个^([a-z]+[,.]?[ ]?|[a-z]+[']?)+$
,但它无法识别Apostrophes(')。
- (BOOL)validateFirstNameOrLastNameOrCity:(NSString *) inputCanditate {
NSString *firstNameRegex = @"^([a-z]+[,.]?[ ]?|[a-z]+[']?)+$";
NSPredicate *firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@",firstNameRegex];
return [firstNamePredicate evaluateWithObject:inputCanditate];
}
答案 0 :(得分:1)
我认为您正在寻找像this这样的模式:^[a-zA-Z ']+$
然而,这非常糟糕。那么变音符号,重音符号和其他许多不属于ASCII字母表的字母呢?
更好的解决方案是允许任何语言的任何类型的信件。
为此,您可以使用Unicode“字母”类别\p{L}
,例如^[\p{L}]+$
。
..或者你可以放弃这条规则 - 正如合理建议的那样。
答案 1 :(得分:1)
我可以推荐^ [A-Z] [a-zA-Z'] *?
// The NSRegularExpression class is currently only available in the Foundation framework of iOS 4
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[A-Z][a-zA-Z ']*" options:NSRegularExpressionAnchorsMatchLines error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:searchText options:0 range:NSMakeRange(0, [string length])];
return numberOfMatches > 1;
^ [A-Z]:强制从A到Z的大写字母开始
[a-zA-Z'] *:其后是任何数量的特征,即' a'到''' A'到' Z',空格或简单的引用