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

PO Box地址校验正则误拦截含Box合法地址 该如何优化修正

PO Box地址校验正则误拦截修复方案

问题根源

当前正则仅校验是否存在PO Box相关的特征字符串,未限制Box后的内容,所以会误匹配Boxwood这类包含Box前缀的普通地址字符串。

优化思路

在原有特征匹配规则后追加校验逻辑,要求匹配到Box类特征后,必须跟随「可选空白字符+至少1位数字」,仅符合该规则才判定为邮政信箱。

修改后完整代码

// 正则改为静态编译模式,避免每次调用重复初始化,提升高频调用性能
private static readonly Regex poBoxReg = new Regex(@"(?i)\b(?:p(?:ost)?\.?\s*[o0](?:ffice)?\.?\s*b(?:[o0]x)?|b[o0]x)\s*\d+", RegexOptions.Compiled);

private static bool IsPostOfficeBox(string add1, string add2)
{
    if (add1 == null) return false;
        
    var isPOBox = poBoxReg.IsMatch(add1);
    if (add2 == null || isPOBox) return isPOBox;

    return poBoxReg.IsMatch(add2);
}

校验效果验证

  • 可正常拦截的场景:PO Box 123、Post Office Box 456、P.O. Box 789、Box 012、P0 B0x 345(兼容用0代替O的手写场景)
  • 不会误拦截的场景:42 Boxwood Ln、Boxing Club Rd、123 Boxer Ave

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 00:15:03