Python 使用Regex验证电话号码并将其解析为3个值
我试图解析以“(222)555-2333”格式编写的电话号码,即括号中包含的三位数区号,后跟三连字符四位数格式的七位数本地号码。它还应该忽略所有前导和尾随空格,以及出现在区号和本地号码之间的任何空格。但是,它不应接受区号中的任何空格(例如,“(222)”中的空格),也不应接受七位本地号码中的空格 这是我到目前为止写的。它为(800)121-2121'工作,但为(333)122-2222'失败。我尝试在模式的开头添加\s,但也没有帮助。知道我哪里出错了吗Python 使用Regex验证电话号码并将其解析为3个值,python,regex,python-3.x,Python,Regex,Python 3.x,我试图解析以“(222)555-2333”格式编写的电话号码,即括号中包含的三位数区号,后跟三连字符四位数格式的七位数本地号码。它还应该忽略所有前导和尾随空格,以及出现在区号和本地号码之间的任何空格。但是,它不应接受区号中的任何空格(例如,“(222)”中的空格),也不应接受七位本地号码中的空格 这是我到目前为止写的。它为(800)121-2121'工作,但为(333)122-2222'失败。我尝试在模式的开头添加\s,但也没有帮助。知道我哪里出错了吗 import re s = " (33
import re
s = " (333) 122-2222"
reg = re.compile(r'^\((\d{3})\)\s*(\d{3})-(\d{4})$')
test = bool(re.match(reg,s))
if test:
reg.search(s).groups()
else:
ValueError
你只需要在开始时检查空格
import re
s = " (333) 122-2222"
reg = re.compile(r'^\s*\((\d{3})\)\s*(\d{3})-(\d{4})$')
test = bool(re.match(reg,s))
if test:
reg.search(s).groups()
else:
ValueError
还有,有没有一种方法,我只能处理带有特殊字符的空格?在这种情况下,(404)555-1212可以,但正则表达式需要拒绝404 555-1212