From e9cdc55cb9ff01d6682593cac1f7d4548f7e9168 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Fri, 19 Mar 2021 09:55:11 +0800 Subject: [PATCH] =?UTF-8?q?Validator=E6=96=B0=E5=A2=9E:=20=E8=BD=A6?= =?UTF-8?q?=E6=9E=B6=E5=8F=B7(=E8=BD=A6=E8=BE=86=E8=AF=86=E5=88=AB?= =?UTF-8?q?=E7=A0=81)=E9=AA=8C=E8=AF=81=E3=80=81=E9=A9=BE=E9=A9=B6?= =?UTF-8?q?=E8=AF=81=EF=BC=88=E9=A9=BE=E9=A9=B6=E8=AF=81=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=EF=BC=89=E7=9A=84=E6=AD=A3=E5=88=99=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E3=80=82=20=E9=A1=B9=E7=9B=AE=E4=B8=AD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=BD=A6=E6=9E=B6=E5=8F=B7=E5=92=8C=E6=A1=A3=E6=A1=88?= =?UTF-8?q?=E7=BC=96=E5=8F=B7=20=E5=9C=BA=E6=99=AF=E6=AF=94=E8=BE=83?= =?UTF-8?q?=E5=A4=9A=EF=BC=8C=E5=9B=A0=E6=AD=A4=E6=B7=BB=E5=8A=A0=EF=BC=9B?= =?UTF-8?q?=20=E7=BB=8F=E8=BF=87=E7=9C=9F=E5=AE=9E=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=AE=9E=E6=88=98=E4=BD=BF=E7=94=A8=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/lang/PatternPool.java | 16 +++++ .../java/cn/hutool/core/lang/Validator.java | 65 +++++++++++++++++++ .../cn/hutool/core/lang/ValidatorTest.java | 11 ++++ 3 files changed, 92 insertions(+) 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 495f23b5b..153d6c122 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 @@ -127,6 +127,22 @@ public class PatternPool { * */ public static final Pattern CREDIT_CODE = Pattern.compile("^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$"); + /** + * 车架号 + * 别名:车辆识别代号 车辆识别码 + * eg:LDC613P23A1305189 + * eg:LSJA24U62JG269225 + * 十七位码、车架号 + * 车辆的唯一标示 + */ + public static final Pattern CAR_VIN = Pattern.compile("^[A-Za-z0-9]{17}$"); + /** + * 驾驶证 别名:驾驶证档案编号、行驶证编号 + * eg:430101758218 + * 12位数字字符串 + * 仅限:中国驾驶证档案编号 + */ + public static final Pattern CAR_DRIVING_LICENCE = Pattern.compile("^[0-9]{12}$"); // ------------------------------------------------------------------------------------------------------------------------------------------------------------------- /** diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java b/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java index 3fd15c862..1da6627a9 100644 --- a/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/Validator.java @@ -90,6 +90,14 @@ public class Validator { * 中国车牌号码 */ public final static Pattern PLATE_NUMBER = PatternPool.PLATE_NUMBER; + /** + * 车架号;别名:车辆识别代号 车辆识别码;十七位码 + */ + public final static Pattern CAR_VIN = PatternPool.CAR_VIN; + /** + * 驾驶证 别名:驾驶证档案编号、行驶证编号;12位数字字符串;仅限:中国驾驶证档案编号 + */ + public final static Pattern CAR_DRIVING_LICENCE = PatternPool.CAR_DRIVING_LICENCE; /** * 给定值是否为{@code true} @@ -1136,4 +1144,61 @@ public class Validator { public static boolean isCreditCode(CharSequence creditCode) { return CreditCodeUtil.isCreditCode(creditCode); } + + /** + * 验证是否为车架号;别名:行驶证编号 车辆识别代号 车辆识别码 + * + * @param value 值,17位车架号;形如:LSJA24U62JG269225、LDC613P23A1305189 + * @return 是否为车架号 + * @since 5.6.3 + */ + public static boolean isCarVin(CharSequence value) { + return isMatchRegex(CAR_VIN, value); + } + + /** + * 验证是否为车架号;别名:行驶证编号 车辆识别代号 车辆识别码 + * + * @param 字符串类型 + * @param value 值 + * @param errorMsg 验证错误的信息 + * @return 验证后的值 + * @throws ValidateException 验证异常 + * @since 5.6.3 + */ + public static T validateCarVin(T value, String errorMsg) throws ValidateException { + if (!isCarVin(value)) { + throw new ValidateException(errorMsg); + } + return value; + } + + /** + * 验证是否为驾驶证 别名:驾驶证档案编号、行驶证编号 + * 仅限:中国驾驶证档案编号 + * + * @param value 值,12位数字字符串,eg:430101758218 + * @return 是否为档案编号 + * @since 5.6.3 + */ + public static boolean isCarDrivingLicence(CharSequence value) { + return isMatchRegex(CAR_DRIVING_LICENCE, value); + } + + /** + * 验证是否为驾驶证 别名:驾驶证档案编号、行驶证编号 + * + * @param 字符串类型 + * @param value 值 + * @param errorMsg 验证错误的信息 + * @return 验证后的值 + * @throws ValidateException 验证异常 + * @since 5.6.3 + */ + public static T validateCarDrivingLicence(T value, String errorMsg) throws ValidateException { + if (!isCarDrivingLicence(value)) { + throw new ValidateException(errorMsg); + } + return value; + } } 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 e4f1bf450..4a2af9d81 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 @@ -195,4 +195,15 @@ public class ValidatorTest { Assert.assertTrue(Validator.isBetween(0.19f, 0.1f, 0.2f)); Assert.assertTrue(Validator.isBetween(0.19, 0.1, 0.2)); } + + @Test + public void isCarVinTest(){ + Assert.assertTrue(Validator.isCarVin("LSJA24U62JG269225")); + Assert.assertTrue(Validator.isCarVin("LDC613P23A1305189")); + } + + @Test + public void isCarDrivingLicenceTest(){ + Assert.assertTrue(Validator.isCarDrivingLicence("430101758218")); + } }