首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有大量“或‘s”的Regex

具有大量“或‘s”的Regex
EN

Stack Overflow用户
提问于 2012-02-27 00:09:26
回答 3查看 317关注 0票数 1

编写一些正则表达式来帮助处理街道地址。然而,我不确定regex是否是解决这个问题的正确方法。

我有一个像这样的街道地址:

好莱坞大道7829

我想写一个这样的正则表达式(伪-ode):

代码语言:javascript
运行
复制
match a NUMBER then ONE OR MORE WORDS then a STREET TYPE

在javascript中,这个regex看起来如下所示:

代码语言:javascript
运行
复制
/^\d+\s+.*(\sAve|\sStreet|\sSt.|..800 MORE ABBREVIATIONS!...)/ig

正如您所看到的,因为有800+邮政街"type“缩写,这个正则表达式将非常大。我需要用计算机代码来生成它,这没问题,但我不确定这是否是解决这类问题的好方法?

我可以看到这个问题到了我想要写一个正则表达式,试图匹配一个街道名称和数据库中的一个。那么,我真的不明白标准正则表达式在这种情况下是如何工作的:

代码语言:javascript
运行
复制
match a NUMBER then **A STREET NAME IN A DATABASE** then a STREET TYPE

任何输入都是非常感谢的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-27 00:22:31

如果所有的地址都像<number> <name> <type>一样简单,那么生活就会非常简单--但它们不是,所以不是。

对于一个正则表达式来说,街道地址太复杂了,例如东51街5/45号或长岛路215-217。您需要两者之一:将其分解并解析各个部分,让用户在特定字段中输入地址,或者只接受他们给您的内容。

票数 3
EN

Stack Overflow用户

发布于 2012-02-27 00:17:10

您可以捕获街道类型,然后检查捕获的内容是否在街道类型列表中。

审判结果将变成:

代码语言:javascript
运行
复制
/^\d+\s+.*\s+(.*)

/^\d+\s+.*\s+(?P<streettype>.*)

票数 1
EN

Stack Overflow用户

发布于 2012-02-27 00:21:12

使用捕获组。我对JS不太确定,但是在java中您可以这样做:

/^(\d+)\s+(.*)(\w+)/ig

并且可以在括号之间(使用Matcher.getGroup(int))获取组的内容。

稍后,将这些字符串与数据库进行匹配。

总之..。为什么?也许街道类型是合理的,但是限制街道名称只会为您增加更多的工作,并且会给用户带来不便(如果街道的名称与数据库中的名称不完全相同,或者您的数据库没有得到足够的更新)。想让用户确定他的方向吗?如果用户不愿意,他可以提供假数据。用户想让你知道他的方向?然后你就可以相信用户会把它写对了.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9458583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档