正则表达式模式,以防止两个相似的字符彼此相邻

时间:2017-07-28 23:24:37

标签: python regex python-3.x

  

虚荣格式[img]
  更糟糕的是,虚荣的有时候用肉语代表电话号码。这些所谓的虚荣电话号码以1和区号(即1-123-)开头,但之后它们将继续混合使用字母(大写或小写),数字和破折号。它们仅限于使用7个字母和数字(在1和区号之后),但是破折号可以插入除了紧接在另一个破折号之后的任何点。 Flahlings让事情变得如此复杂!

我一直在研究这个难题;我已经能够处理第一组整数和破折号,但我无法使字母数字部分工作。 我正在使用python 3,这是我到目前为止所拥有的:

vanity_number = r'[+]?(1-)[0-9]{3}-[a-zA-Z0-9-]{7}'

这种方式在某种程度上起作用,但我需要它与字母数字分开计算破折号,所以像1-345-qpG-8s-vd这样的东西仍然适合该模式。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

最后一部分应由7个字母组成。如果我理解正确,每个可以跟随一个可选的破折号,但不能有两个相互接近的破折号,可能不应该以破折号结束。

^\+?1-\d{3}-(?:[A-Za-z\d]-?){7}\b$

如果允许以破折号结尾,请在结尾处删除字边界 \b

Here is a demo at regex101