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

如何调整地址正则表达式,使其可匹配任意顺序的地址格式?

正则调整方案

核心思路是用分支匹配符|同时兼容两种地址排序规则,把原有的「门牌号+街道+邮编+城市」作为第一个匹配分支,新增「邮编+城市+门牌号+街道」作为第二个匹配分支即可。

调整后的基础版正则如下,原有捕获组逻辑完全兼容:

(?:([0-9-]*) ?([\p{L}*,\. '-]*) ?([0-9 ]*) ?([\p{L}*,\. '-]*) ([0-9]{5}) ?([\p{L}*,\. '-]*)|([0-9]{5}) ?([\p{L}*,\. '-]*) ([0-9-]*) ?([\p{L}*,\. '-]*) ?([0-9 ]*) ?([\p{L}*,\. '-]*))

如果需要两种地址顺序下,同一类地址片段都落在同一个捕获组里,推荐使用命名捕获组,后续提取内容更方便:

(?:
  (?<门牌号>[0-9-]*) ?(?<街道段1>[\p{L}*,\. '-]*) ?(?<街道数字补充>[0-9 ]*) ?(?<街道段2>[\p{L}*,\. '-]*) (?<邮编>[0-9]{5}) ?(?<城市>[\p{L}*,\. '-]*)
  |
  (?<邮编>[0-9]{5}) ?(?<城市>[\p{L}*,\. '-]*) (?<门牌号>[0-9-]*) ?(?<街道段1>[\p{L}*,\. '-]*) ?(?<街道数字补充>[0-9 ]*) ?(?<街道段2>[\p{L}*,\. '-]*)
)

匹配效果验证

  • 正序地址16 Rue du Pont Louis-Philippe 75000 Paris:可正常捕获所有字段,和原有正则效果完全一致
  • 倒序地址75000 Paris 16 Rue du Pont Louis-Philippe:可正常捕获对应字段,不会出现匹配失败的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:45:03