编写一些正则表达式来帮助处理街道地址。然而,我不确定regex是否是解决这个问题的正确方法。
我有一个像这样的街道地址:
好莱坞大道7829
我想写一个这样的正则表达式(伪-ode):
match a NUMBER then ONE OR MORE WORDS then a STREET TYPE在javascript中,这个regex看起来如下所示:
/^\d+\s+.*(\sAve|\sStreet|\sSt.|..800 MORE ABBREVIATIONS!...)/ig正如您所看到的,因为有800+邮政街"type“缩写,这个正则表达式将非常大。我需要用计算机代码来生成它,这没问题,但我不确定这是否是解决这类问题的好方法?
我可以看到这个问题到了我想要写一个正则表达式,试图匹配一个街道名称和数据库中的一个。那么,我真的不明白标准正则表达式在这种情况下是如何工作的:
match a NUMBER then **A STREET NAME IN A DATABASE** then a STREET TYPE任何输入都是非常感谢的!
发布于 2012-02-27 00:22:31
如果所有的地址都像<number> <name> <type>一样简单,那么生活就会非常简单--但它们不是,所以不是。
对于一个正则表达式来说,街道地址太复杂了,例如东51街5/45号或长岛路215-217。您需要两者之一:将其分解并解析各个部分,让用户在特定字段中输入地址,或者只接受他们给您的内容。
发布于 2012-02-27 00:17:10
您可以捕获街道类型,然后检查捕获的内容是否在街道类型列表中。
审判结果将变成:
/^\d+\s+.*\s+(.*)或
/^\d+\s+.*\s+(?P<streettype>.*)
发布于 2012-02-27 00:21:12
使用捕获组。我对JS不太确定,但是在java中您可以这样做:
/^(\d+)\s+(.*)(\w+)/ig
并且可以在括号之间(使用Matcher.getGroup(int))获取组的内容。
稍后,将这些字符串与数据库进行匹配。
总之..。为什么?也许街道类型是合理的,但是限制街道名称只会为您增加更多的工作,并且会给用户带来不便(如果街道的名称与数据库中的名称不完全相同,或者您的数据库没有得到足够的更新)。想让用户确定他的方向吗?如果用户不愿意,他可以提供假数据。用户想让你知道他的方向?然后你就可以相信用户会把它写对了.
https://stackoverflow.com/questions/9458583
复制相似问题