我需要验证电话号码。以下是代码段
-(BOOL) validatePhone:(NSString*) phoneString
{
NSString *regExPattern = @"^[6-9]\\d{9}$"; ORIGINAL
// NSString *regExPattern = @"^[6-9](\\d)(?!\1+$)\\d*$";
NSRegularExpression *regEx = [[NSRegularExpression alloc] initWithPattern:regExPattern options:NSRegularExpressionCaseInsensitive error:nil];
NSUInteger regExMatches = [regEx numberOfMatchesInString:phoneString options:0 range:NSMakeRange(0, [phoneString length])];
NSLog(@"%lu", (unsigned long)regExMatches);
if (regExMatches == 0) {
return NO;
}
else
return YES;
}
我想拒绝sequnce示例中的电话号码 9999999999,6666677777
答案 0 :(得分:3)
似乎你想要禁止5个或更多相同的连续数字。
使用
@"^[6-9](?!\\d*(\\d)\\1{4})\\d{9}$"
请参阅regex demo
<强>详情
^
- 字符串开头[6-9]
- 从6
到9
(?!\d*(\d)\1{4})
- 如果在当前位置的右边,有一个未通过匹配的否定前瞻
\d*
- 0+位数(\d)
- 捕获到第1组的数字\1{4}
- 重复四次的第1组中捕获的相同数字\d{9}
- 任意9位$
- 字符串结尾(替换为\z
以匹配字符串的最后一部分,在字符串中的最终LF符号之前禁止匹配)。请注意,\d
在ICU正则表达式库中具有Unicode识别功能,因此使用[0-9]
代替\d
可能更安全。