首页 > 解决方案 > 地址的正则表达式

问题描述

对于某些地址,建筑物可能占用多个门号,例如 13 - 15 StreetName。“13 - 15”是我关注的部分。你将如何做一个正则表达式来挑选这部分。

我想像 [0-9] - [0-9] 这样的东西适用于 1 - 3 但如果地址是 12 - 13 [0-9][0-9] - [0-9][0-9]可以工作,但我想确保像 13 - 3 这样的东西不会工作,因为地址不能倒退,而像 99 - 103 这样的东西也可以在数字长度不同的情况下工作。真的很简单,我错过了什么吗?

我仍然是一名学生,不太擅长正则表达式,我只是需要它来处理我正在做的一些 js,并且花了太长时间无处可去。

谢谢你。

标签: javascriptregex

解决方案


没有真正的好方法可以做到这一点,因为您正在有效地尝试解析不是常规语言的东西。虽然有几种正则表达式语言允许引用您以前见过的东西,但在这种特定情况下这对您没有帮助。

不过,我们可以轻松地采用蛮力解决方案:)

https://regex101.com/r/4bRmil/1

^(\d{3} - \d{3,}|\d{2} - \d{2,}|\d - \d+)$

5 - 1正如您所看到的,对于可能无效的情况,它仍然会中断。这是您需要在正则表达式之外检查的内容。


推荐阅读