You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl如何提取(312) 555-1212格式的电话号码

Perl 提取指定格式电话号码解决方案

你的原有代码问题在于正则仅匹配零散的数字段,没有匹配完整的电话号码格式规则,直接写精准匹配目标格式的正则即可实现需求。

核心匹配规则说明

目标格式(312) 555-1212的正则匹配逻辑如下:

  • 左括号在正则中属于特殊字符,需要转义为\(
  • 匹配3位数字用\d{3}
  • 右括号同样转义为\)
  • 匹配1个空格直接写空格即可,若允许多个空格可替换为\s+
  • 匹配横杠直接写-
  • 末尾4位数字用\d{4}

完整修改后代码

my $str = 'Phone:

(312) 555-1212 _
';
my @elements_found;

# 全局匹配所有符合格式的电话号码
my @all_phones = $str =~ /(\(\d{3}\) \d{3}-\d{4})/g;

if (@all_phones) {
    foreach my $ph (@all_phones) {
        print "PHONE NO: $ph\n"; 
        push(@elements_found, $ph);
    }
}

可选格式化扩展

如果你需要提取后转为纯数字、或者312-555-1212这类无括号的格式,可以分组捕获各段数字:

# 分组捕获区号、前3位、后4位
my @phone_parts = $str =~ /\((\d{3})\) (\d{3})-(\d{4})/;
if (@phone_parts == 3) {
    # 示例:输出为312-555-1212格式
    my $formatted_ph = join('-', @phone_parts);
    print "格式化后的号码:$formatted_ph\n";
}

内容的提问来源于stack exchange,提问作者gatorreina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:36:04