Ios &引用\P{字母}”是;和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

我有一个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是一个未知的转义序列…

您需要两个反斜杠:

regularExpressionWithPattern:@"[\\P{Letter}]"
因为反斜杠本身需要在字符串中转义

检查“仅信件”的一个可能更简单的解决方案是


你需要两个反斜杠。此外,不需要将其括在模式括号中

regularExpressionWithPattern:@"\\P{Letter}"

你到底想要什么?我想知道我做错了什么。你想给A到Z的信吗?@user2006934:不客气。我在答案中添加了一个替代解决方案,也许它是有用的。
regularExpressionWithPattern:@"\\P{Letter}"