我正在尝试验证代表地名的字符串。我正在匹配像这样的简单字符集
NSString *regexName = @"[a-zA-Z][., a-zA-Z\\t\\-]*"
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexName];
我想知道简单的正则表达式用于匹配更广泛的国际字符集(主要是西方字符)。我可以在正则表达式中枚举我能想到的每个角色,但我想还有另外一种方法。我正在寻找想法。
答案 0 :(得分:0)
NSRegularExpression
基于ICU正则表达式,在docs中列出了不少选项。
您正在寻找的是Letter属性,其编码为\p{Letter}
(或简称为\p{L}
)。
以下是一些想要在实践中看到它的人的代码:
NSArray *strings = [NSArray arrayWithObjects:
@"Joe",
@"Chloë",
@"Søren",
@"Renée",
@"Se7en",
@"Zürich",
@"Genève",
@"Tromsø",
@"Jane",
nil];
NSString *regexName = @"\\p{Letter}[., \\p{Letter}\\t\\-]*";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexName];
NSArray *filteredArray = [strings filteredArrayUsingPredicate:predicate];
它匹配所有带字母的名称,但不匹配字符串“Se7en”。
这个问题提到了西方人物,但是对于使用其他字母表的语言的例子也会很好。