弄清楚字符串是街道地址,套房号码,购物中心还是其他东西

时间:2011-12-14 20:35:54

标签: javascript regex parsing street-address

我正在使用javascript来解析一些数据,并且遇到了一些挑剔。

我有一个1-3行数据的字段 通常只有一行代表街道地址:

1234 Hollywood St.

但有时它是这样的:

Beverly Hills Shopping Center
1234 Hollywood St.

其他时间是这样的:

1234 Hollywood St
Ste 12

其他时候有这样的东西:

1234 Hollywood St
2nd Floor
(between Hollywood St and Tom Cruise Ave)

我真的很想知道哪条线是街道地址。目前,我正在尝试确定哪条线是“地址线2”,意思是套件#,楼层号等...我真的不需要地址,第2行,但是通过消除过程,这有助于把街道地址告诉我。

是否有一个很好的工具可用,比如正则表达式函数或能告诉我字符串是否可能是街道地址的东西?

或者还有另一种方法可以解决这个问题吗?

谢谢!

修改

此算法不需要是100%。我正准备将地址发送到谷歌地图API进行验证。我可以尝试地址的每一行来查看哪一行是有效的,但这会增加对谷歌的调用次数并带来一个小的,但有限的假阳性机会。

我希望能够在通过谷歌验证之前清理数据,以减少错误和更多呼叫的必要性。

3 个答案:

答案 0 :(得分:2)

如另一个答案所述,这是地址验证服务的工作。请注意,Google Maps API不是地址验证服务 - 最好将其描述为一种非常强大的地址近似服务(存在显着差异)。

地址验证意味着地址在当前是真实的,这意味着它对应于实际位置。它通常意味着可以交付地址(取决于业务需求)。

我是地址验证公司SmartyStreets的软件开发人员。我们提供batch processing tool,我认为它非常适合您的用例。由于我们的系统最多接受街道地址的两个输入行,因此我建议为每个地址超过2个地址的地址生成一些排列。它也非常快(在不到一个小时内处理了100万个地址),并且不需要我们进行任何互动,因为它是在线服务。

另一个好消息是,您甚至可能不需要将地址发送到Google地图API,因为它们已经过Delivery-Point验证。但这取决于您的确切需求。

更新:SmartyStreets现在提供international address verification

答案 1 :(得分:1)

有可用的web服务可以传递一个地址,它将返回一个格式良好的解析地址的json / xml对象。也许这样的事情对你有帮助吗?像一些评论说。您将无法使用javascript

完成此操作

这是我亲自使用过的一项服务。您需要熟悉API

https://webgis.usc.edu/Services/AddressNormalization/WebService/DeterministicNormalizationWebService.aspx

答案 2 :(得分:1)

首先看看以下官方USPS缩写
Street Suffix Abbreviations
Secondary Unit Designators

然后你会知道你期望作为输入,但你还必须采取所有可能的非官方变化/标点符号......很多事情要做...左< BR />

一般来说,街道地址行应以数字开头,后跟空格(将其与二楼等分开),一个或多个单词,最后是街道后缀缩写。对于城市,州,拉链元组,你必须混合完整的州名和他们的偏见(包括像N York或N.York或N. York这样的短片)并记住zip5和zip5 + 4个案例。