撇号 (') 在正则表达式中无法识别
Apostrophes (') is not recognised in regular expression
我想要一个可以包含
的名字的正则表达式
1)字母表
2)空格
3)撇号
Exp: Raja, Raja reddy, Raja's,
我使用了这个 ^([a-z]+[,.]?[ ]?|[a-z]+[']?)+$
但它无法识别撇号 (')。
- (BOOL)validateFirstNameOrLastNameOrCity:(NSString *) inputCanditate {
NSString *firstNameRegex = @"^([a-z]+[,.]?[ ]?|[a-z]+[']?)+$";
NSPredicate *firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@",firstNameRegex];
return [firstNamePredicate evaluateWithObject:inputCanditate];
}
我认为您正在寻找类似 this 的模式:^[a-zA-Z ']+$
然而,这很糟糕。变音符号、重音符和许多其他不属于 ASCII 字母表的字母呢?
更好的解决方案是允许来自任何语言的任何类型的字母。
为此,您可以使用 Unicode "letter" 类别 \p{L}
,例如^[\p{L}]+$
。
.. 或者您可以完全放弃该规则 - 正如合理建议的那样。
我可以推荐^[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' 到 'z', 'A' 到 'Z', space 或简单引用
我想要一个可以包含
的名字的正则表达式1)字母表 2)空格 3)撇号
Exp: Raja, Raja reddy, Raja's,
我使用了这个 ^([a-z]+[,.]?[ ]?|[a-z]+[']?)+$
但它无法识别撇号 (')。
- (BOOL)validateFirstNameOrLastNameOrCity:(NSString *) inputCanditate {
NSString *firstNameRegex = @"^([a-z]+[,.]?[ ]?|[a-z]+[']?)+$";
NSPredicate *firstNamePredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES[c] %@",firstNameRegex];
return [firstNamePredicate evaluateWithObject:inputCanditate];
}
我认为您正在寻找类似 this 的模式:^[a-zA-Z ']+$
然而,这很糟糕。变音符号、重音符和许多其他不属于 ASCII 字母表的字母呢?
更好的解决方案是允许来自任何语言的任何类型的字母。
为此,您可以使用 Unicode "letter" 类别 \p{L}
,例如^[\p{L}]+$
。
.. 或者您可以完全放弃该规则 - 正如合理建议的那样。
我可以推荐^[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' 到 'z', 'A' 到 'Z', space 或简单引用