首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拒绝数字序列的正则表达式

拒绝数字序列的正则表达式
EN

Stack Overflow用户
提问于 2018-04-09 09:27:43
回答 1查看 269关注 0票数 1

我需要确认电话号码。下面是代码片段

代码语言:javascript
运行
复制
-(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中的电话号码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-09 10:43:04

似乎您想不允许5和更多相同的连续数字。

使用

代码语言:javascript
运行
复制
@"^[6-9](?!\\d*(\\d)\\1{4})\\d{9}$"

regex演示

详细信息

  • ^ -字符串的开始
  • [6-9] -从69的数字
  • (?!\d*(\d)\1{4}) -如果在当前位置的右侧立即有,则会导致匹配失败。
    • \d* - 0+数字
    • (\d) -被捕获到第一组的数字
    • \1{4} -第一组中捕获的相同数字重复了四次

  • \d{9} -任意9位数
  • $ -字符串的末端(用\z代替以匹配字符串的末尾,在字符串中最后的LF符号之前不允许匹配)。

请注意,在ICU regex库中,\d是可识别的Unicode,因此使用[0-9]而不是\d可能更安全。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49729661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档