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

如果您想将找到的邮政编码分成两部分,这不只是在空格上分割的问题吗?英国邮政编码的两部分只是用空格隔开,对吗?在java中,这将是:

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

其中 postcode 是经过验证的邮政编码, 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}");
于 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"];

这不会验证邮政编码,但如果它们之间没有输入空格,它会将其分成两部分。

于 2012-07-11T10:47:13.797 回答
-1

为此,您可以使用 Google 最近的开源库。http://code.google.com/p/libphonenumber/

于 2011-04-10T11:43:31.060 回答