ReGex为邮政编码

时间:2013-01-10 07:36:09

标签: java android

我需要从地址中提取6位数的邮政编码。

“51 Bras Basah Road#01-01宏利中心新加坡189554”

邮政编码总是6位数,但不一定在地址的最后一位。

请帮我提供一个合适的“java”正则表达式来获取上述地址的邮政编码。

ASMI

3 个答案:

答案 0 :(得分:6)

如果您确定邮政编码是输入中唯一的6位数字,那么您应该可以逃脱:

Pattern zipPattern = Pattern.compile("(\\d{6})");
Matcher zipMatcher = zipPattern.matcher("51 Bras Basah Road #01-01 Manulife Centre Singapore 189554");
if (zipMatcher.find()) {
    String zip = zipMatcher.group(1);
}

另见the API documentation of java.util.regex.Pattern

答案 1 :(得分:0)

这是简单的正则表达式

(。*)((\ d){6})$

第一组是“51 Bras Basah Road#01-01新加坡宏利中心”  第二组是邮政编码(6digits)

答案 2 :(得分:0)

这是一个正则表达式,可以找到 last 六位数字:

((\d{6}.*)*\s)?(\d{6})([^\d].*)?$

当然,在编译模式时需要转义字符串:

Pattern postal_code_group3 = Pattern.compile("((\\d{6}.*)*\\s)?(\\d{6})([^\\d].*)?$");

您可以从任何比赛的第3组获得邮政编码。

请注意,第2组会在邮政编码前强制使用空格,除非字符串以邮政编码开头。

第4组在邮政编码之后处理任何事情,并且还防止将7位或更多位数字作为邮政编码匹配。