簡體   English   中英

地址的正則表達式

[英]Regex for address

對於某些地址,建築物可能會占用多個門牌號,例如 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 並且花了太長時間無處可去。

謝謝你。

沒有什么好的方法可以做到這一點,因為您正在有效地嘗試解析非常規語言的內容 盡管有幾種正則表達式語言允許引用您以前見過的內容,但這在這種特定情況下對您沒有幫助。

不過,我們可以輕松地尋求蠻力解決方案:)

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

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

但是,正如您所看到的,對於可能無效的5 - 1類的情況,它仍然會中斷。 這是您需要在正則表達式之外檢查的內容。

我認為使用正則表達式甚至不可能做到這一點。 我會做這樣的事情:

 var addresses = [ "12 - 14 State St.", "14 - 12 State St.", ]; addresses.forEach(address => console.log(validAddress(address))); function validAddress(address) { return !!(address.match(/\\d+\\s?-\\s?\\d+/) || []).filter(a => { var numbers = a.split('-').map(b => b.trim()); return (numbers.length && numbers[0] < numbers[1]); }).length; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM