1

我试图阅读苹果文档,但我永远不会使用正则表达式,我不明白如何解决这个问题。我需要编写一个正则表达式来检查用户是否选择了与此规则匹配的字符串:第一个字母可以是 s 或 S 并且它是可选的第二个字符可以是 a 。(字符点),它是可选的 4 位数字,可以从 1 到 4,并且必须始终存在于数字可以存在于 az 的任何单个字符之后,并且在我可以拥有 . (字符点)并且它是可选的最后 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}?}

任何人都可以帮助我吗?谢谢!

4

1 回答 1

2

干得好:

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

你有一个额外的左括号,使语法无效,并在 s+之后签名\d,这使得正则表达式接受无限数量的数字。

正则表达式非常适合调试正则表达式: http ://regexpal.com/

于 2012-06-06T07:55:39.230 回答