街道地址的正则表达式


Regular expression for street address

我正在尝试匹配包含街道和号码的街道地址。

我需要这个表达式来匹配街道名称的单词,然后是数字。

例如,我想匹配"somestreet 25"、"someotherstreet 23"、"a-third street 190",但不匹配"a_vth street 67"。

我已经试了一个小时了,但我甚至不太擅长regex。

到目前为止,我得到的只是/^[a-zA-Z]+(['s][a-zA-Z]+)(['s][0-9]){1,4}$/,但不用说,它不起作用。

---编辑---

我知道写街道地址没有标准的、全局的方式,正则表达式也不可能复杂到足以在全局范围内解决这个问题,但这个网站是为当地餐馆提供的,我只想让地址看起来像是一个地址(即使在那时,如果没有地图和电话验证,它仍然可能是一个假的地址)。

然而,在发送任何东西之前,都会随时进行人工验证,而且这是一个相当小的社区,所以送货员和餐馆老板都知道订单是不是假的。

我只想让他们不要被愚蠢的垃圾短信骚扰!@#$地址中的字符,并具有良好的可读地址格式供其使用。

这应该适用于您的示例:

/^[a-zA-Z]([a-zA-Z-]+'s)+'d{1,4}$/

您有点过于复杂了。这是一个不区分大小写的表达式,用于查找带有连字符和空格的字母,后跟数字,符合您指定的条件。

/^([a-z- ]+)'s+([0-9]+)$/i

但我呢?我住在30th Ave.

顺便说一句,我用[0-9]+表示末尾的一个或多个数字,而不是{1,4}范围。如果必须不超过4个,则将其切换回您的范围{1,4}

这将执行

 /^([A-Z][-A-Z ]+)'s+('d+)$/i

我认为街道名称没有固定的形式。因此正则表达式不适用于此