我想寫一個正則表達式,有助於一個地址,例如21-大步行路或21聖伊麗莎白驅動器我想出了以下正則表達式,但我不太想如何納入地址字段驗證的正則表達式
"regexp=^[A-Za-z-0-99999999'
我想寫一個正則表達式,有助於一個地址,例如21-大步行路或21聖伊麗莎白驅動器我想出了以下正則表達式,但我不太想如何納入地址字段驗證的正則表達式
"regexp=^[A-Za-z-0-99999999'
貴婦人,
看到答案就解決這一問題與正則表達式驗證的所有字符(字母數字,空格破折號,句號,撇號): 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/是學習正則表達式的快速和交互式的方法。試試以上地址。
我已成功使用;
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種格式。
如果你沒有上述地址的固定格式,我會使用正則表達式來消除地址中未使用的符號(例如專門的sybmols - &(%#$^。)結果將是:
[A-Za-z0-9'\.\-\s\,]
只需添加到Serzas'的答案(因爲沒有足夠的代表。評論)。字母和數字可以有效地被\ w替換。 此外,撇號,逗號,句點和連字符不一定需要反斜槓。 我的要求還涉及正面和反面的斜線,所以\ /和最後用\ s空格。工作正則表達式對我來說,這樣是:
pattern: "[\w',-\\/.\s]"
定期進行簡單的地址驗證
^[#.0-9a-zA-Z\s,-]+$
例如表達用於地址匹配的情況
#1, North Street, Chennai - 11
例如,對地址不匹配的情況下,我
$1, North Street, Chennai @ 11
這一個工作:
\ d + [](?:?[A-ZA-Z0-9 .-] + [])+(?:大道|巷|路|大道|驅動器|街|大道|博士|路|大道| LN |聖)。?
來源:https://www.codeproject.com/Tips/989012/Validate-and-Find-Addresses-with-RegEx
這是一個REGEX非常模糊的目的。有什麼限制 - 什麼字符被允許/禁止?一個地址幾乎可以包含任何東西。而且,'0-99999'將不起作用,因爲這是一個字符類 - 它一次匹配一個字符,所以它應該只是'0-9'。 – Utkanos 2012-07-12 16:50:15
正則表達式要麼太具體,要麼太鬆散。你只能驗證看到的東西**看起來像**地址或不。 – nhahtdh 2012-07-12 16:51:27