簡體   English   中英

使用java將英國郵政編碼拆分為兩個主要部分

[英]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.

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