验证邮政编码?我需要正则表达式吗?

时间:2017-05-14 03:20:56

标签: java regex

我需要验证String zip是5个数字长并以80,81,82或83开头。 我需要一个正则表达式吗?

我试过boolean validZip = (zip.length() == 5 && zip.charAt(0) == 8 && zip.charAt(1) >= 0 && zip.charAt(1) <= 3);,但80221为我返回false。

2 个答案:

答案 0 :(得分:4)

试试这个:

boolean validZip = (zip.length() == 5 && zip.charAt(0) == '8' && zip.charAt(1) >= '0' && zip.charAt(1) <= '3');

您正在比较ASCII值。要比较字符,您需要在单引号中编写它们。如果要比较ASCII值,则可以按如下方式进行:

boolean validZip = (zip.length() == 5 && zip.charAt(0) == 56 && zip.charAt(1) >= 48 && zip.charAt(1) <= 51);

0-9的ASCII值范围为48-57。

答案 1 :(得分:2)

当然,您可以使用this regex

^8[0123]\d{3}$

并在像这样的

中使用它
String zipcode = "80882";
Pattern p = Pattern.compile("^8[0123]\\d{3}$");
Matcher m = p.matcher(zipcode);
boolean validZip = m.find();