首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"\P{Letter}“和NSRegularExpression

"\P{Letter}“和NSRegularExpression
EN

Stack Overflow用户
提问于 2013-03-15 18:21:27
回答 2查看 469关注 0票数 0

我有一个NSString,我想用NSRegularExpression来测试,但它的行为与我期望的完全不同,我不知道到哪里去寻找答案。

下面是我的代码:

代码语言:javascript
复制
    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是一个未知的转义序列...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-15 18:29:52

你需要两个反斜杠:

代码语言:javascript
复制
regularExpressionWithPattern:@"[\\P{Letter}]"

因为反斜杠本身需要在字符串中进行转义。

检查“仅限字母”的一个可能更简单的解决方案是

代码语言:javascript
复制
NSString *stringToTest = ...;
NSCharacterSet *letterCharset = [NSCharacterSet letterCharacterSet];
BOOL lettersOnly = [[stringToTest stringByTrimmingCharactersInSet:letterCharset] length] == 0;
票数 1
EN

Stack Overflow用户

发布于 2013-03-15 18:35:42

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

代码语言:javascript
复制
regularExpressionWithPattern:@"\\P{Letter}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15429798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档