使用java将英国邮政编码拆分为两个主要部分

Far*_*san 3 java regex postal-code

这个用于验证邮政编码的正则表达式非常完美

^([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})$
Run Code Online (Sandbox Code Playgroud)

但我想拆分邮政编码,以便使用java检索邮政编码的各个部分.

怎么能在java中完成?

Ric*_*d H 5

以下是匹配英国邮政编码的官方正则表达式:

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

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

String[] fields = postcode.split("\\s");
Run Code Online (Sandbox Code Playgroud)

其中邮政编码是经过验证的邮政编码,而fields []将是包含第一和第二部分的长度为2的数组.

编辑:如果这是为了验证用户输入,并且您想验证第一部分,那么您的正则表达式将是:

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

要验证第二部分,它是:

Pattern secondPart = Pattern.compile("[0-9][A-Z-[CIKMOV]]{2}");
Run Code Online (Sandbox Code Playgroud)