Ios &引用\P{字母}”是;和NSRegularExpression
我有一个NSString,我想用NSRegularExpression进行测试,但它的行为与我预期的完全不同,我不知道在哪里搜索答案 这是我的代码:Ios &引用\P{字母}”是;和NSRegularExpression,ios,objective-c,regex,xcode,nsregularexpression,Ios,Objective C,Regex,Xcode,Nsregularexpression,我有一个NSString,我想用NSRegularExpression进行测试,但它的行为与我预期的完全不同,我不知道在哪里搜索答案 这是我的代码: BOOL companyNameContainsOnlyAuthorizedCharacters = YES; NSError *error = nil; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\P
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是一个未知的转义序列…
您需要两个反斜杠:
regularExpressionWithPattern:@"[\\P{Letter}]"
因为反斜杠本身需要在字符串中转义
检查“仅信件”的一个可能更简单的解决方案是
你需要两个反斜杠。此外,不需要将其括在模式括号中
regularExpressionWithPattern:@"\\P{Letter}"
你到底想要什么?我想知道我做错了什么。你想给A到Z的信吗?@user2006934:不客气。我在答案中添加了一个替代解决方案,也许它是有用的。
regularExpressionWithPattern:@"\\P{Letter}"