我有一个NSString,我想用NSRegularExpression来测试,但它的行为与我期望的完全不同,我不知道到哪里去寻找答案。
下面是我的代码:
BOOL companyNameContainsOnlyAuthorizedCharacters = YES;
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\P{Letter}]" options:0 error:&error];
NSArray *matches = [[NSArray alloc] init];
matches = [regex matchesInString:[model editorName] options:0 range:NSMakeRange(0,[[model editorName] length])];
if ([matches count] > 0) {
companyNameContainsOnlyAuthorizedCharacters = NO;
}据我所知,\P{Letter}应该匹配除字母以外的任何内容。尽管如此,它只匹配字符"\“、"P”、"{“、"L”、"e“、"t”、"r“和"}”。我也尝试过去掉方括号[],但是它根本不匹配任何东西。
如有任何帮助,将不胜感激,提前谢谢。
编辑:另外,xcode给了我一个警告:\P是一个未知的转义序列...
发布于 2013-03-15 18:29:52
你需要两个反斜杠:
regularExpressionWithPattern:@"[\\P{Letter}]"因为反斜杠本身需要在字符串中进行转义。
检查“仅限字母”的一个可能更简单的解决方案是
NSString *stringToTest = ...;
NSCharacterSet *letterCharset = [NSCharacterSet letterCharacterSet];
BOOL lettersOnly = [[stringToTest stringByTrimmingCharactersInSet:letterCharset] length] == 0;发布于 2013-03-15 18:35:42
你需要两个反斜杠。此外,您也不需要将其包含在模式括号中。
regularExpressionWithPattern:@"\\P{Letter}"https://stackoverflow.com/questions/15429798
复制相似问题