【发布时间】:2022-01-14 03:49:43
【问题描述】:
我研究过一个匹配德国和奥地利手机号码的正则表达式。我无法完成它。
这是我目前所拥有的:
[^\d]((\+49|0049|0|\+43|0043)\s?(1|9)[1567]\d{1,2}([ \-/]*\d){7,8})(?!\d)
你可以在我的regex-demo查看性能。
- 国际拨号代码以
+49(德国)和+43(奥地利)开头。这包含在我的正则表达式中。 - 手机号码的长度因您编写电话号码的方式而异。我收集了多个示例demo。
问题:如何改进正则表达式以匹配我演示的所有示例?
此外,我想检查特定数字是否与定义的正则表达式匹配。 但是,我的方法并没有真正奏效:
import re
slot_value = "0176 48200179"
regex_mobile = r"[^\d]((\+49|0049|0|\+43|0043)\s?(1|9)[1567]\d{1,2}([ \-/]*\d){7,8})(?!\d)"
match = re.fullmatch(regex_mobile, slot_value)
print(match)
>>> None
【问题讨论】:
-
我需要更多解释您的问题。您只想匹配德国和奥地利的号码。对于有效的德国号码:+49、0049、+ (49) 和对于奥地利:+43、0043?对吗?
-
正确。德国 +49 , 0049, + (49)。奥地利:+43、0043、+ (43)。无国际号码:
0 -
建议先删除括号和东西(规范化字符串),这样既可以使模式更短,也可以让你在解析这些东西时更轻松。