From c0f1afd709cf40c76ff42680bccc2f88cf45f575 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 2 Dec 2020 02:33:45 +0800 Subject: [PATCH] fix zipcode --- CHANGELOG.md | 1 + .../java/cn/hutool/core/lang/PatternPool.java | 4 +-- .../cn/hutool/core/lang/ValidatorTest.java | 26 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5be8fc61a..4a26bfb76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ * 【core 】 修复ZipUtil判断压缩文件是否位于压缩目录内的逻辑有误的问题(issue#1251@Github) * 【json 】 修复JSONObject.accumulate问题 * 【core 】 修复部分xlsx文件sax方式解析空指针问题(issue#1265@Github) +* 【core 】 修复PatternPool中邮编的正则(issue#1274@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java b/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java index 8a0acb008..f2261059f 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/PatternPool.java @@ -63,9 +63,9 @@ public class PatternPool { public final static Pattern CITIZEN_ID = Pattern.compile("[1-9]\\d{5}[1-2]\\d{3}((0\\d)|(1[0-2]))(([012]\\d)|3[0-1])\\d{3}(\\d|X|x)"); /** - * 邮编 + * 邮编,兼容港澳台 */ - public final static Pattern ZIP_CODE = Pattern.compile("[1-9]\\d{5}(?!\\d)"); + public final static Pattern ZIP_CODE = Pattern.compile("^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[0-7]|6[0-7]|7[0-5]|8[0-9]|9[0-8])\\d{4}|99907[78]$"); /** * 生日 */ diff --git a/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java b/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java index 720bba7f6..3e240709d 100644 --- a/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/lang/ValidatorTest.java @@ -161,4 +161,30 @@ public class ValidatorTest { Assert.assertTrue(Validator.isUUID(IdUtil.randomUUID().toUpperCase())); Assert.assertTrue(Validator.isUUID(IdUtil.fastSimpleUUID().toUpperCase())); } + + @Test + public void isZipCodeTest(){ + // 港 + boolean zipCode = Validator.isZipCode("999077"); + Assert.assertTrue(zipCode); + // 澳 + zipCode = Validator.isZipCode("999078"); + Assert.assertTrue(zipCode); + // 台(2020年3月起改用6位邮编,3+3) + zipCode = Validator.isZipCode("822001"); + Assert.assertTrue(zipCode); + + // 内蒙 + zipCode = Validator.isZipCode("016063"); + Assert.assertTrue(zipCode); + // 山西 + zipCode = Validator.isZipCode("045246"); + Assert.assertTrue(zipCode); + // 河北 + zipCode = Validator.isZipCode("066502"); + Assert.assertTrue(zipCode); + // 北京 + zipCode = Validator.isZipCode("102629"); + Assert.assertTrue(zipCode); + } }