经过数小时的搜索,我发现了一个正则表达式可以验证街道地址(只是没有城市/州/邮编的街道)。这仅用于美国。 很难找到任何适合我的需求或适用于编号街道的东西。
除了像这样的实例
,我使用的那个效果很好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)\.?
感谢您的协助。
答案 0 :(得分:0)
尝试一下:
/\d+\s[\w]+\s(.*)/i
您可以通过拨打小组赛1来上街。
更新
如果您想获得整个“大街”和“苹果路”,可以通过使用此正则表达式调用分组匹配2来做到这一点:
\d+\s(\d*[a-z]+)?\s?(.*)
答案 1 :(得分:0)
在正则表达式中,列出28个可能的街道后缀(St,Ave等)。美国邮政局(USPS)可以识别其中的190个,另外还有300个左右的替代拼写(例如,St和Street)。
此外,在现实生活中的数据中,地址经常省略街道后缀,其中“ 123 Main”代表“ 123 Main St”。 RegEx不会告诉您是否缺少“ St”后缀或不应该像在“ 123 Embarcadero”中那样。
换句话说,RegEx无法可靠地用于邮政地址验证。
我工作的公司生产YAddress,这是专门用于地址验证的工具。它可以解决上述所有问题,还有数百个问题。