经过几个小时的搜索,我找到了一个验证街道地址的正则表达式(只有没有城市/州/邮编的街道)。这仅供美国使用。很难找到任何符合我的需求或符合编号街道的东西。
我正在使用的那个很好用,除了像
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)\.?
我感谢任何和所有的帮助。
在正则表达式中,列出28个可能的街道后缀(St,Ave等)。 USPS识别其中的190个,另外还有300个左右的替代拼写(例如St和Street)。
此外,在现实生活中的数据中,地址通常省略了街道后缀,其中“123 Main”代表“123 Main St”。 RegEx不会告诉您“St”后缀是否缺失或者不应该出现在“123 Embarcadero”中。
换句话说,RegEx不能可靠地用于邮政地址验证。
我工作的公司生产YAddress,一种专门用于地址验证的工具。它解决了上述所有问题,还有数百个问题。