修正街道地址正则表达式验证

时间:2019-03-16 16:45:49

标签: regex street-address

经过数小时的搜索,我发现了一个正则表达式可以验证街道地址(只是没有城市/州/邮编的街道)。这仅用于美国。 很难找到任何适合我的需求或适用于编号街道的东西。

除了像这样的实例

,我使用的那个效果很好
12345 5th ave ne
4367 103rd North
1234 Main St     <- currently works but needs to work after fix
12345 Apple Way  <- currently works but needs to work after fix

所有当前工作实例都需要继续工作。

问题是它希望结尾处是Ave(或st / etc),我还需要在结尾处同时允许北/南/西/东的所有组合作为单个或双重组合(例如SouthWest,东北)。

当发现其中一种组合或单个组合(不区分大小写)时,我不想包含每个组合,而是希望正则表达式允许(匹配)。我还想优化Way / Street / etc,使其也不区分大小写

就我的使用而言,单元#/公寓#/ etc不会严格用作基本街道地址。

这是我目前拥有的:

\d+[ ](?:[A-Za-z0-9.-]+[ ]?)+(?:Avenue|Lane|Road|Boulevard|Drive|Street|Way|Ave|Dr|Rd|Blvd|Ln|St|Wy|avenue|lane|road|boulevard|drive|street|way|ave|dr|rd|blvd|ln|st|wy)\.?

感谢您的协助。

2 个答案:

答案 0 :(得分:0)

尝试一下:

/\d+\s[\w]+\s(.*)/i

您可以通过拨打小组赛1来上街。

DEMO

更新

如果您想获得整个“大街”和“苹果路”,可以通过使用此正则表达式调用分组匹配2来做到这一点:

\d+\s(\d*[a-z]+)?\s?(.*)

DEMO

答案 1 :(得分:0)

在正则表达式中,列出28个可能的街道后缀(St,Ave等)。美国邮政局(USPS)可以识别其中的190个,另外还有300个左右的替代拼写(例如,St和Street)。

此外,在现实生活中的数据中,地址经常省略街道后缀,其中“ 123 Main”代表“ 123 Main St”。 RegEx不会告诉您是否缺少“ St”后缀或不应该像在“ 123 Embarcadero”中那样。

换句话说,RegEx无法可靠地用于邮政地址验证。

我工作的公司生产YAddress,这是专门用于地址验证的工具。它可以解决上述所有问题,还有数百个问题。