正则表达式街道地址匹配

isu*_*elt 19 javascript regex highlight match street-address

虽然我知道匹配街道地址永远不会是完美的,但我希望创建一些大部分时间都能接近的正则表达式.

我想突出一个地址.我在正则表达式上很糟糕,我试图接近但是有人可以帮我理解如何让它变得更好吗?

串:

上午6点 - 11点,Palma Sola小学,6806 Fifth Ave NW,Bradenton,FL 34209来到dsfsd sa fsa fasdf附近的asfsds 5001 west你的妈妈不住在这里我的2005 ford游侠,

正则表达式1:

/\S +(\ d {2,5}\S +)([A | P]?!米\ b)中(([A-ZA-Z |\S +] {1,5}){1,2}) ?([\ S | \,|.] +)(([A-ZA-Z |\S +] {1,30}){1,4})(法院|克拉|街道| ST |驱动|博士|车道| LN |道路| RD | BLVD)([\ S | \,| | \;] +)(([A-ZA-Z |\S +] {1,30}){1,2} )([\ S | \,|.] +)\ b(AK?| AL | AR | AZ | CA | CO | CT | DC | DE | FL | GA | GU | HI | IA | ID | IL | IN | KS |肯塔基州| LA | MA | MD | ME | MI | MN | MO | MS | MT |数控| ND | NE | NH |新泽西州| NM | NV |纽约州| OH | OK |和| PA | RI | SC | SD | TN | TX | UT | VA | VI | VT | WA | WI | WV | WY)([\ S | \,|.]?+)(\ S +\d {5})([\ S | \,|.] +)/ I

(有时只有街道和城市,但没有州或邮编)

正则表达式2:

/\B(\ d {2,5}\S +)([A | P]?!米\ b)中(NW | NE | SW | SE |北|南|西|东| N | E | S |瓦特?)([\ S | \,|.] +)(([A-ZA-Z |\S +] {1,30}){1,4})(法院|克拉|街道| ST |驱动|博士|车道| LN |公路| RD | BLVD)/ I

摆弄它:http: //jsfiddle.net/isuelt/rMC6P/11/

Mat*_*att 32

美国地址不是常规语言,使用正则表达式无法匹配.它们在某些孤立的情况下很有用,但总的来说,它们会让你失望,特别是对于这样的输入.

我曾经在一家地址验证公司工作.在回答您的问题时,为了在一串文本中"突出显示地址",我建议您尝试使用提取实用程序.有几个,我建议你环顾四周,但这是我们使用你的问题的输入 - 你可以看到,它找到了地址并验证了它:

LiveAddress提取示例

API端点返回JSON,其中包含每个地址的起始位置和结束位置,以及每个地址的大量信息.(参见上图底部的CSV输出.)

我赞扬你冒着那些你试过的正则表达式!希望这很有帮助.

  • @Nick这是一个答案.如果是广告,我不会说我在那里工作.我也不会建议他研究其他选择.这是广告的样子:http://stackoverflow.com/a/7463590/1048862 (18认同)
  • 这是SmartyStreets的答案还是广告? (9认同)
  • 另一个验证想法是使用 Google 的地理编码 API 来确定他们是否拥有该地址的数据。 (2认同)