我有一個所有大寫地址名稱和數字的集合,我想提取每個地址的第一個遇到的地址編號。下面的示例顯示我想什麼,從每個提取:地址編號的最佳javascript正則表達式
- 80 ROSE小屋 - > 80
- 80A ROSE小屋 - > 80A
- 80一支玫瑰小屋 - > 80一
- 80ROSE COTTAGE - > 80(意外無空格)
- [其他任何文本] 80 ROSE小屋 - > 80
我已經發現了一些類似的問題回答這裏和其他地方在互聯網上,但他們總是與地址當成一個整體而不是而言,就要解決名稱及編號:
Match each address from the address number to the 'street type'
Regular Expression: Any character that is NOT a letter or number
javascript regular expressions address number
JavaScript regex to validate an address
的最後一個使參考這引起我對可能的單個文本字符之後的任何字母數字字符(例如, 80)在我的JavaScript正則表達式。但是,如果不添加替代的「只找到數字」組(\ d +),我上面的第四個示例不會返回數字。
(?:\d+\s*[A-Z]?(?![A-Z0-9]))|(?:\d+))
有沒有辦法將這兩個組合成一個正則表達式?或者,這是不可能的JavaScript的正則表達式實現?
任何與此有關的幫助將大大升值。
難道真的要那麼複雜嗎?地址通常只有一個數字,它必須是您要查找的數字。如果它後面跟着一個像80A一樣的字符,或者後面跟着一個像80A那樣的空格,那麼這就是你要找的東西。 – 2014-09-22 11:04:59
/嗨感謝您的回覆。數據集並不完美,與我最後兩個例子一樣,有時候這個數字並不是一開始就是數字,或者是一個沒有分隔空間的數字。在不使用前面的情況下,我發現80ROSECOTTAGE會導致80R,當它應該是80時。因此我現在添加了僅數字的替代組。這是有效的,但我想知道是否有一種方法可以在沒有組的情況下進行組合。 – Derek 2014-09-22 11:23:35