Python中的正则表达式.检查电话号码的有效性



我正试图在Python中构建一个用于检查电话号码有效性的逻辑。如果用户输入的任何手机号码以+91或91开头,并且包含6-9之间的10位数字。它应该是一个有效的电话号码。我尝试了以下代码,但它给了我一个错误:错误:位置9处的括号不平衡任何帮助都将不胜感激。例如:电话号码应具有以下任何格式:+917162377291916162377291+918162377291+919162377291如果用户以上述格式输入任何一个号码,则条件是第一个数字后91或+91应在{6,7,8,9}之间,后面跟着9个数字应为有效的电话号码。

import re 
s=input('Enter the phone number:')
m=re.fullmatch('^(+91|91)[6-9]d{9}',s)
if m!=None:
print('Correct Number')
else:
print('Incorrect Number')

所以我终于能够用下面的方法解决这个问题了?正如@Tim Biegeleisen所说。

s=input('Enter the phone number:')
m=re.fullmatch('+?9?1?[6-9]d{9}',s)
if m!=None:
print('Correct Number')
else:
print('Incorrect Number')

错误是由于转义与(字符匹配的(而不是组的一部分。

但是匹配这些格式,您不需要分组机制,也不必使9和1可选,只需要+

^+?91[6-9]d{9}$

Regex演示

s=input('Enter the phone number:')
m=re.fullmatch('+?91[6-9]d{9}', s)
if m!=None:
print('Correct Number')
else:
print('Incorrect Number')

最新更新