首页 > 解决方案 > 用于匹配单行标准 USPS 地址的 RegEx

问题描述

我正在学习如何从一串数据中提取数据以定义为变量并根据需要使用。我每次解析的数据源都是标准的电子邮件,地址每次都是完全相同的标点和格式。唯一的区别是有时邮政编码可能是 9 位代码。

123 Riverview Pkwy, Orlando, FL 55556
123 Riverview Pkwy, Orlando, FL 55556-1234

我能够像这样提取城市:

preg_match('/, (.*?)\,/', $xaemailpaste, $insuredcity1);
$insuredcity = $insuredcity1[1];

这将完美地返回“奥兰多”,但我无法获得地址、州或邮编。有人可以帮我用正则表达式为每个组件分配变量吗?

$streetaddress = 123 Riverview Pkwy 
$city = Orlando
$state = FL
$zip = 55556

我在正则表达式方面取得了一些成功,我很高兴能了解更多信息,但我花了 2 天时间尝试一些东西并查找要尝试的东西,但我无法让表达式恰好满足我的确切需求。

标签: phphtmlregex

解决方案


此 RegEx可能会帮助您将地址分组,您可以在其中简单地提取列出的变量:

([0-9]+)\s([A-Za-z0-9\-\s]+)\,\s([A-Za-z\s]+)\,\s([A-Z]{2})\s([0-9\-]{5,10})

正则表达式

如果您愿意,您可以使用此 RegEx 并创建额外的边界。它目前有五个组(),其中组$2$5您的目标变量。


推荐阅读