Python Regex模式,以防止两个相似的字符相邻

Python Regex模式,以防止两个相似的字符相邻,python,regex,python-3.x,Python,Regex,Python 3.x,虚荣格式 更糟糕的是,虚荣的肉身有时会用文字来表示电话号码。这些所谓的虚荣电话号码以1和区号(即1-123-)开头,但之后它们将继续以字母(大写或小写)、数字和破折号的组合形式出现。它们仅限于使用7个字母和数字(在1和区号之后),但破折号可以插入到除紧跟在另一个破折号之后之外的任何位置。鞭笞使事情变得如此复杂 我一直在研究这个难题;我已经能够处理第一组整数和破折号,但是我无法让字母数字部分工作。 我正在使用python 3,这是我到目前为止所拥有的: vanity_number = r'[+]?

虚荣格式
更糟糕的是,虚荣的肉身有时会用文字来表示电话号码。这些所谓的虚荣电话号码以1和区号(即1-123-)开头,但之后它们将继续以字母(大写或小写)、数字和破折号的组合形式出现。它们仅限于使用7个字母和数字(在1和区号之后),但破折号可以插入到除紧跟在另一个破折号之后之外的任何位置。鞭笞使事情变得如此复杂

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

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

这种方法在一定程度上是有效的,但我需要它将破折号与字母数字分开计算,这样1-345-qpG-8s-vd之类的东西仍然适合这种模式。感谢您提供的帮助。

最后一部分应该由7个字母组成。如果我理解正确,每个破折号后面都可以有一个可选的破折号,但不能有两个彼此相邻的破折号,并且可能不应该以破折号结尾

^\+?1-\d{3}-(?:[A-Za-z\d]-?){7}\b$
如果允许以破折号结尾,请删除结尾处的单词边界
\b


最后一部分应由7个字母组成。如果我理解正确,每个破折号后面都可以有一个可选的破折号,但不能有两个彼此相邻的破折号,并且可能不应该以破折号结尾

^\+?1-\d{3}-(?:[A-Za-z\d]-?){7}\b$
如果允许以破折号结尾,请删除结尾处的单词边界
\b