我正在尝试匹配包含街道和号码的街道地址。
我需要这个表达式来匹配街道名称的单词,然后是数字。
例如,我想匹配"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
我认为街道名称没有固定的形式。因此正则表达式不适用于此