我尝试使用正则表达式验证iOS中的用户名。要做到这一点,我使用的是NSPredicate,但它会引发运行时错误。
这里是我在ViewController中的内容:
@property (nonatomic, strong) NSString *userNamePattern;
和
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
_userNamePattern = @"[a-zA-Z0-9_-]{3,20}";
然后在点击按钮时的动作中:
NSPredicate *userNameTest = [NSPredicate predicateWithFormat:self.userNamePattern];
在那个底线,它抛出了这个错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "[a-zA-Z0-9_-]{3,20}"'
为什么不喜欢这个?
答案 0 :(得分:1)
您只是将正则表达式模式传递给谓词。你需要给它一个实际的谓词格式字符串。
尝试使用此谓词:
NSPredicate *userNameTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", self.userNamePattern];