如何为名称编写正则表达式?
我希望它验证以下示例:
阿尔伯特爱因斯坦ALBERT EINSTEIN
ALBert EINstein
alberT einstIN
Ale'rt E'i'not'e'in
这些都应被视为有效。
这是我到目前为止所做的,但它失败了:
-(BOOL) validateName: (NSString *) name{
NSString *nameRegex = @"(?:[A-Z]+[a-z' '])";
NSPredicate *nameTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", nameRegex];
return [nameTest evaluateWithObject:name];
}
有人可以建议改进吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
如果你将表达式包装在
中(?ismwx-ismwx:...)
标记设置。用括号计算带括号的表达式 指定的标志启用或-disabled。标志在“Flag”中定义 选项“。
不区分大小写的标志是i。
或者您可以使用
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"albert einstein" options:NSRegularExpressionCaseInsensitive error:&error];
但是你需要指定名称似乎具有一般性的上下文...
答案 2 :(得分:0)
^[A-Za-z]+(\s[A-Za-z]+)*$
适用于
阿尔伯特,阿尔伯特爱因斯坦,爱迪生Arantes do Nascimento又名贝利如果您只需要2个单词,请使用:
^[A-Za-z]+\s[A-Za-z]+$