NSRegularExpression
类有搜索与模式匹配的子字符串的方法,例如- numberOfMatchesInString:options:range:
但是,如果我想检查整个字符串是否与模式匹配,我该怎么办? 在我的情况下,我需要检查输入的数字,其长度为6..10位数,不再有任何其他符号。
我的代码可以检查最小字符串长度:
NSUInteger min = 6, max = 10;
NSString *pattern = [NSString stringWithFormat:@"\\d{%u,%u}", min, max];
NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
NSString *number = [_numberTextField text];
NSUInteger matches = [re numberOfMatchesInString:number options:0 range:NSMakeRange(0, [number length])];
但它可以找到额外的符号,数字或其他因为字符串具有匹配的子字符串。
例如,如果我输入12345
,则regex会说该字符串没有匹配项
使用12345678901
值(11位)结果将是1匹配,但在这种情况下,字符串长度大于10并且我想要结果