如何使用Regex提取特定格式电话号码的号码主体与分机号
解决电话号码主体与分机号的正则匹配问题
你之前的正则无法匹配带连字符的号码主体,核心问题是(\d+)只能匹配连续数字,无法包含连字符,同时也没处理好无国家码的情况。可以用下面的正则表达式满足所有示例的匹配需求:
^(\d+-)?([\d-]+)(?:x(\d+))?$
正则规则说明
^:锁定字符串起始位置,确保从开头匹配,避免截取中间无效内容(\d+-)?:匹配可选的国家码部分,格式为“数字+连字符”,?表示这部分可不存在(对应无国家码的号码)([\d-]+):捕获电话号码主体,支持数字和连字符的任意组合,完美适配带连字符的主体(比如2-3545645)(?:x(\d+))?$:处理可选的分机号部分:x:分机号的固定前缀标识(\d+):捕获分机号的数字内容?$:表示整个分机部分可不存在,同时锁定字符串结束位置,避免残留无效字符
匹配结果验证(对应你的示例)
1-1231312x24→ 主体:1231312,分机号:2421-1231312x24→ 主体:1231312,分机号:241-343454→ 主体:343454,分机号:空1-2-3545645x243→ 主体:2-3545645,分机号:2434343444x25→ 主体:4343444,分机号:25454545545→ 主体:454545545,分机号:空
内容的提问来源于stack exchange,提问作者crimson589
相关产品推荐
相关产品推荐

