如果用户输入1-12个字符,则验证有效,但如果用户输入空白表达式则无效。为什么呢?
+ (BOOL)validateCardNumberWithString:(NSString*)number {
NSString *numberRegex = [NSString stringWithFormat:@"^(\\d{13})?$"];
NSPredicate *numberTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegex];
return [numberTest evaluateWithObject:number];
}
答案 0 :(得分:3)
正则表达式中的?
表示您可以拥有0或1个表达式。由于空白对您无效,因此应将其删除。
同样根据您的说明,如果您想要1到13位数,则听起来像是@"^\\d{1,13}$"
,因为\d{13}
表示正好是13位数。
答案 1 :(得分:2)
对于小于 13位数,您需要使用此正则表达式:
^(\d{1,12})$
此处{1,12}
是一个量词,匹配包括1到12次的数字(非可选)。