Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Regex验证电话号码并将其解析为3个值_Python_Regex_Python 3.x - Fatal编程技术网

Python 使用Regex验证电话号码并将其解析为3个值

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

我试图解析以“(222)555-2333”格式编写的电话号码,即括号中包含的三位数区号,后跟三连字符四位数格式的七位数本地号码。它还应该忽略所有前导和尾随空格,以及出现在区号和本地号码之间的任何空格。但是,它不应接受区号中的任何空格(例如,“(222)”中的空格),也不应接受七位本地号码中的空格

这是我到目前为止写的。它为(800)121-2121'工作,但为(333)122-2222'失败。我尝试在模式的开头添加\s,但也没有帮助。知道我哪里出错了吗

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