iOS构建一个正则表达式,用于NSRegularExpression

时间:2012-06-06 07:30:34

标签: ios regex nsregularexpression

我试过阅读苹果文档,但我永远不会使用正则表达式,我不明白如何解决这个问题。 我需要编写一个正则表达式来检查用户是否选择了与此规则匹配的字符串: 第一个字母可以是s或S,它是可选的 第二个字符可能是一个。 (char dot),它是可选的 4位数字可以从1到4,并且必须始终存在 在数字可以出现任何来自a-z的单个字符并且可以是可选的 我可以拥有一个。 (char dot),它是可选的 最后2个必须是一个数字必须始终是2个数字,并且可以是可选的

我试着用这种方式写作

NSString *regexStr = @"(s|S)?(\\.)?(\\d+){,4}([a-z]?(\\.)?(\\d+){2}?";

但是控制台会出现此错误

Error making regex: Error Domain=NSCocoaErrorDomain Code=2048 
"The operation couldn’t be completed. (Cocoa error 2048.)" UserInfo=0x6d3e9b0  
{NSInvalidValue=(s|S)?(\.)?(\d+){,4}([a-z]?(\.)?(\d+){2}?}

有人可以帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

你走了:

(s|S)?(\.)?(\d){0,4}[a-z]?(\.)?(\d){2}?

你有一个额外的左括号,使语法无效,+后面的\d符号,使正则表达式接受无穷大的数字。

Regexpal非常适合调试regexps:http://regexpal.com/