数据:
(650 ) 724-6354
(650) 724-6354
(650)724-6354
650 724-6354
650 724 6354
650 724 6354
有人可以为上述建议一个正则表达式吗?
我需要检测10位数,并将其表示为650-724-6354
答案 0 :(得分:2)
这应该为您提供3个正则表达式捕获中的数字:
/(\d{3})[ \)]+(\d{3})[ \-]+(\d{4})/
答案 1 :(得分:0)
答案 2 :(得分:0)
可能的解决方案是:
/\(?\s*(\d{3})\s*\)?(\s*|-)(\d{3})(\s*|-)(\d{4})/
然后,1美元,3美元,5美元将包含您正在寻找的总共10位数字。
答案 3 :(得分:0)
这里是一个更完整的建议,减少了更复杂的字符序列的缺陷。
使用python编写的一个简单片段,考虑组之间的任何类型的字符,返回每个数字序列的组件。
import re
def get_components(phone_str):
rex = re.compile(r"[^\d]*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})[^\d]*")
return rex.findall(phone_str)[0]
以下是使用示例字符串的测试代码:
test_strs = [
"650 724 6354",
"(650 ) 724-6354",
"(650) 724-6354",
"(650)724-6354",
"650 724-6354",
"650 724 6354",
"650 724 6354",
]
print(["%s-%s-%s"%get_components(p) for p in test_strs])