2012-07-12 52 views
14

我想寫一個正則表達式,有助於一個地址,例如21-大步行路或21聖伊麗莎白驅動器我想出了以下正則表達式,但我不太想如何納入地址字段驗證的正則表達式

"regexp=^[A-Za-z-0-99999999' 
+2

這是一個REGEX非常模糊的目的。有什麼限制 - 什麼字符被允許/禁止?一個地址幾乎可以包含任何東西。而且,'0-99999'將不起作用,因爲這是一個字符類 - 它一次匹配一個字符,所以它應該只是'0-9'。 – Utkanos 2012-07-12 16:50:15

+0

正則表達式要麼太具體,要麼太鬆散。你只能驗證看到的東西**看起來像**地址或不。 – nhahtdh 2012-07-12 16:51:27

回答

20

貴婦人,

看到答案就解決這一問題與正則表達式驗證的所有字符(字母數字,空格破折號,句號,撇號): regex street address match

ŧ他的問題是,街道地址在格式上有很大差異,很難對它們進行編碼。如果您試圖驗證地址,根據其格式查找是否無效,則很難做到。 這將返回下面的地址(253 N.櫻桃街),任何與它相同的格式:

\d{1,5}\s\w.\s(\b\w*\b\s){1,2}\w*\. 

這讓1-5位數字的門牌號碼,一個空間,一個字符後跟一個句點(爲N.或S.),1-2個字的街道名稱,完成了一個縮寫(如st。或rd。)。

因爲正則表達式用於查看事情是否符合標準或協議(您定義的),所以您可能不希望允許上面提供的地址,特別是第一個帶有短劃線的地址,因爲它們不是非常標準。如果你願意,你可以修改我上面的代碼,允許他們 - 你可以添加

(-?) 

允許一個破折號,但並不需要一個。

另外,http://rubular.com/是學習正則表達式的快速和交互式的方法。試試以上地址。

2

我已成功使用;

Dim regexString = New stringbuilder 
    With regexString 
     .Append("(?<h>^[\d]+[ ])(?<s>.+$)|")    'find the 2013 1st ambonstreet 
     .Append("(?<s>^.*?)(?<h>[ ][\d]+[ ])(?<e>[\D]+$)|") 'find the 1-7-4 Dual Ampstreet 130 A 
     .Append("(?<s>^[\D]+[ ])(?<h>[\d]+)(?<e>.*?$)|") 'find the Terheydenlaan 320 B3 
     .Append("(?<s>^.*?)(?<h>\d*?$)")     'find the 245e oosterkade 9 
    End With 

    Dim Address As Match = Regex.Match(DataRow("customerAddressLine1"), regexString.ToString(), RegexOptions.Multiline) 

    If Not String.IsNullOrEmpty(Address.Groups("s").Value) Then StreetName = Address.Groups("s").Value 
    If Not String.IsNullOrEmpty(Address.Groups("h").Value) Then HouseNumber = Address.Groups("h").Value 
    If Not String.IsNullOrEmpty(Address.Groups("e").Value) Then Extension = Address.Groups("e").Value 

正則表達式將試圖找到一個結果,如果沒有,它將移動到下一個選擇。如果沒有找到結果,則不存在4種格式。

7

如果你沒有上述地址的固定格式,我會使用正則表達式來消除地址中未使用的符號(例如專門的sybmols - &(%#$^。)結果將是:

[A-Za-z0-9'\.\-\s\,] 
1

正則表達式是這樣的任務非常不錯的選擇嘗試找到一個Web服務或地址數據庫或可清洗的地址數據,而不是一個產品

相關。 :

4

只需添加到Serzas'的答案(因爲沒有足夠的代表。評論)。字母和數字可以有效地被\ w替換。 此外,撇號,逗號,句點和連字符不一定需要反斜槓。 我的要求還涉及正面和反面的斜線,所以\ /和最後用\ s空格。工作正則表達式對我來說,這樣是:

pattern: "[\w',-\\/.\s]" 
1

定期進行簡單的地址驗證

^[#.0-9a-zA-Z\s,-]+$ 

例如表達用於地址匹配的情況

#1, North Street, Chennai - 11 

例如,對地址不匹配的情況下,我

$1, North Street, Chennai @ 11 
+1

請粘貼文本,而不是張貼屏幕截圖。 – bfontaine 2017-10-06 11:57:30

+0

對不起。 簡單地址驗證的正則表達式 ^ [#。0-9a-zA-Z \ s, - ] + $ E.g.地址匹配案例 #1,North Street,Chennai - 11 和 E.g.地址不匹配的情況下 $ 1,北大街,欽奈@ 11 – AJK 2017-10-09 11:13:24

+0

謝謝。請使用編輯按鈕在答案中添加此文本。 – bfontaine 2017-10-09 12:15:00