[英]Split UK postcode into two main parts using java
這個用於驗證郵政編碼的正則表達式非常完美
^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) {0,1}[0-9][A-Za-z]{2})$
但我想拆分郵政編碼,以便使用java檢索郵政編碼的各個部分。
怎么能在java中完成?
以下是匹配英國郵政編碼的官方正則表達式:
http://interim.cabinetoffice.gov.uk/media/291370/bs7666-v2-0-xsd-PostCodeType.htm
如果你想將找到的郵政編碼拆分成兩部分,那不就是在空格上拆分的問題嗎? 英國郵政編碼的兩個部分只是用空格隔開,對嗎? 在java中,這將是:
String[] fields = postcode.split("\\s");
其中郵政編碼是經過驗證的郵政編碼,而fields []將是包含第一和第二部分的長度為2的數組。
編輯:如果這是為了驗證用戶輸入,並且您想驗證第一部分,那么您的正則表達式將是:
Pattern firstPart = Pattern.compile("[A-Z]{1,2}[0-9R][0-9A-Z]?");
要驗證第二部分,它是:
Pattern secondPart = Pattern.compile("[0-9][A-Z-[CIKMOV]]{2}");
我意識到,問這個問題已經有很長一段時間了,但我有同樣的要求,並且認為我會發布我的解決方案,以防有人在那里幫忙:
const string matchString = @"^(?<Primary>([A-Z]{1,2}[0-9]{1,2}[A-Z]?))(?<Secondary>([0-9]{1}[A-Z]{2}))$";
var regEx = new Regex(matchString);
var match = regEx.Match(Postcode);
var postcodePrimary = match.Groups["Primary"];
var postcodeSecondary = match.Groups["Secondary"];
這不會驗證郵政編碼,但如果它們之間沒有輸入空格,它會將其分成兩部分。
您可以使用Google最近開源的庫。 http://code.google.com/p/libphonenumber/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.