3

郵便番号を検証するためのこの正規表現は完璧に機能します

^([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でどのように行うことができますか?

4

3 に答える 3

5

英国の郵便番号を照合するための公式の正規表現は次のとおりです。

http://interim.cabinetoffice.gov.uk/media/291370/bs7666-v2-0-xsd-PostCodeType.htm

見つかった郵便番号を 2 つの部分に分割したい場合は、空白で分割するだけの問題ではありませんか? 英国の郵便番号の 2 つの部分は、スペースで区切られているだけですよね? Java では、次のようになります。

String[] fields = postcode.split("\\s");

ここで、postcode は有効な郵便番号で、fields[] は最初と 2 番目の部分を含む長さ 2 の配列になります。

編集:これがユーザー入力を検証するためのもので、最初の部分を検証する場合、正規表現は次のようになります。

Pattern firstPart = Pattern.compile("[A-Z]{1,2}[0-9R][0-9A-Z]?");

2 番目の部分を検証するには、次のようにします。

Pattern secondPart = Pattern.compile("[0-9][A-Z-[CIKMOV]]{2}");
于 2011-04-10T10:50:09.093 に答える
1

この質問が出されてからかなり長い時間がかかることを認識していますが、同じ要件があり、誰かが助けになる場合に備えて解決策を投稿すると思いました:

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"];

これは郵便番号を検証しませんが、間にスペースが入力されていない場合は2つの部分に分割されます。

于 2012-07-11T10:47:13.797 に答える
-1

これには、Google が最近オープンソース化したライブラリを使用できます。http://code.google.com/p/libphonenumber/

于 2011-04-10T11:43:31.060 に答える