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

问题描述 投票:0回答:2

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

我正在使用的那个很好用,除了像

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,NE,NorthEast) )。

而不是包括每个组合我想要正则表达式允许(匹配)当找到这些组合之一或单个组合时(不区分大小写)。我也想优化Way / Street / etc也不区分大小写

对于我的使用,单位#/ Apt#/ 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)\.?

我感谢任何和所有的帮助。

regex street-address
2个回答
0
投票

试试这个:

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

您可以通过拨打小组赛1来获得街道。

DEMO

UPDATE

如果你想要获得整个“主要街道”和“苹果方式”,你可以通过使用此正则表达式调用组匹配2来完成:

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

DEMO


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.