我需要验证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。
答案 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();