3

在 Objective-c 中,我想检查是否是正确的英语句子/单词,而不是语法上.. 即:诸如“我没去!”、“嗨”是一个单词、“你好世界”之类的文本, “一个 5 位数字”,“% 很高!” 并且“x@x.com”应该通过。但是像 "@/-5%;l:" 这样的文本不应该通过文本可能包含:数字 0-9 和字母 az、AZ 和 -/:;()$&\"'!?,._

我试过了:

NSString *regex1 = @"^[\w:;()'\"\s-]*";
NSPredicate *streamTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex1];
return [streamTest evaluateWithObject:candidate];

但它不会达到我想要的任何想法?

4

1 回答 1

1

我同意@borrrden 的观点,这对于正则表达式来说是一项艰巨的任务,但您需要做的一件事是用另一个反斜杠 ( ) 转义正则表达式反斜杠(因为需要更好的词\)。像这样:

NSString *regex1 = @"^[\\w:;()'\"\\s-]*";

这背后的原因是您希望正则表达式引擎“看到”反斜杠,但处理 NSString 的编译器也使用反斜杠来转义某些字符。"w" 和 "s" 不在这些字符中,因此它们\w\s分别被翻译成ws

文字字符串中的双反斜杠用于在编译后的字符串中添加一个反斜杠。

于 2013-06-24T09:28:47.050 回答