python - 电话号码检查的正则表达式不起作用
问题描述
我正在尝试使用正则表达式来检查电话号码。下面是我正在使用的代码:
phnum ='1-234-567-8901'
pattern = re.search('^\+?\d{0,3}\s?\(?\d{3}\)?[-.\s]?d{3}[-.\s]?d{4}$',phnum,re.IGNORECASE)
print(pattern)
即使对于简单的数字,它似乎也不起作用。谁能纠正我哪里出错了?
解决方案
这是一个潜在的解决方案。我不擅长正则表达式,所以我可能会遗漏一些东西。
import re
phone_pattern = re.compile(r"^(\+?\d{0,2}-)?(\d{3})-(\d{3})-(\d{4})$")
phone_numbers = ["123-345-6134",
"1-234-567-8910",
"+01-235-235-2356",
"123-123-123-123",
"1-asd-512-1232",
"a-125-125-1255",
"234-6721"]
for num in phone_numbers:
print(phone_pattern.findall(num))
输出:
[('', '123', '345', '6134')]
[('1-', '234', '567', '8910')]
[('+01-', '235', '235', '2356')]
[]
[]
[]
[]
推荐阅读
- sql - 从 SQL 数据库中选择除重复项之外的所有内容
- javascript - JS通过字符串访问孙子属性
- python - 如何在 OpenCV 中的图像上临时显示文本?
- r - 将最大值添加到R中的模拟
- bash - bash 的别名不起作用(使用 bash 并在重新启动时编辑了 bash_profile)
- ruby-on-rails - Rails - 注入方法名称和会话
- flutter - Flutter:如何将值传递给有状态的小部件?
- javascript - 无法从外部模块获取新值
- python - 重启后Pyserial的串行连接问题
- snakemake - Snakemake:防止重新运行子工作流程