【问题标题】:Perl regular expression for phone numbers电话号码的 Perl 正则表达式
【发布时间】:2015-01-29 11:12:06
【问题描述】:

我想用 perl 中的正则表达式规范化电话。电话号码允许使用国内和国际格式,目的地格式应为以“+”开头的国际:

国家格式:

022112345678 -> Destination Format: +4922112345678 

国际格式:

004922112345678 -> Destination Format: +4922112345678 
+4922112345678 -> Destination Format: +4922112345678
+43123456789 -> Destination Format: +4943123456789
0043123456789 -> Destination Format: +4943123456789
...

无效格式:

+022112345678
00022112345670
00221abc
...

这可以用一个正则表达式完成吗?

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    你可以搜索这个正则表达式:

    /^(?:(?:\+|00)49|0)([1-9]\d+)$/gm
    

    并替换为:

    +49$1
    

    RegEx Demo

    【讨论】:

    • 实际上这不允许来自德国以外的其他国家/地区的号码,例如 +43123456789 或 0043123456789
    • 正确,因为您的问题/示例之前没有该要求。除了代码如何添加多个国家/地区的 2 位国家/地区代码,例如022112345678 -> Destination Format: +4922112345678 ?
    • 如果数字以一个零开头,我们假设数字是国家格式,因此为了使其国际化,我们不需要将 0 替换为 +49。如果数字以 00 或 + 开头,我们假设数字已经是国际格式。在这个简单的检查中,我们只想确保数字不包含
    • 您的评论被截断了吗?最好你澄清一下这个问题,但可能需要不止一个正则表达式。
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多