电话号码的正则表达式只允许6到20个字符

时间:2018-03-13 21:38:43

标签: regex

正则表达式初学者在这里。我一直试图解决这个电话号码规则无济于事,并希望得到一些建议:

  1. 最少6个字符
  2. 最多20个字符
  3. 必须包含数字
  4. 可以包含这些符号()+-
  5. 如果包含的所有数字相同(即111111
  6. ,则不匹配

    我设法制作了以下两件作品,但我无法将它们放在一起。

    这就是我所拥有的:

    (^(\d)(?!\1+$)\d)
    ([0-9()-+.,]{6,20})
    

    非常感谢提前!

3 个答案:

答案 0 :(得分:0)

我首先要获取所有可能的电话号码列表(感谢@CAustin提供的建议改进):

lst_phone_numbers = re.findall('[0-9+()-]{6,20}',your_text)

然后使用您最熟悉的编程语言过滤掉那些不符合语句5的语句。

答案 1 :(得分:0)

试试这个RegEx:

(?:([\d()+-])(?!\1+$)){6,20}

说明:

  1. (?:创建一个非捕获组
  2. (\d|[()+-])创建一个匹配数字,括号,+或 -
  3. 的组
  4. (?!\1+$)如果匹配从#2找到的值一次或多次直到字符串结尾
  5. ,则不会返回匹配项
  6. {6,20}需要来自#1
  7. 中非捕获组的6-20场比赛

答案 2 :(得分:0)

试试这个:

[{
    "keyOne": "valueOne",
    "keyTwo": "valueTwo"
}]

因此,此部分((?:([0-9()+\-])(?!\2{5})){6,20}) 表示每个模式允许重复的次数,例如?!\2{5},我将22222作为示例,您可以将其更改为你想要的。