ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 常用验证方法(commons-validator,hutool)

2020-08-30 02:31:35  阅读:316  来源: 互联网

标签:assertTrue Java daodaotest GenericValidator commons hutool Assert Validator vali


背景

为了实现接口响应全量字段断言,开发断言表达式框架时,除了调研常用的断言框架之外,也调研了一些验证框架和方法(非hibernate-validatorspring-validator验证注解)。

简单学习下构建工具Gradle如何使用。

commons-validator

A common issue when receiving data either electronically or from user input is verifying the integrity of the data. This work is repetitive and becomes even more complicated when different sets of validation rules need to be applied to the same set of data based on locale. Error messages may also vary by locale. This package addresses some of these issues to speed development and maintenance of validation rules.

Apache开源的通用验证框架,目前最新版本1.7

hutool

A set of tools that keep Java sweet.

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

Hutool 是项目中 “util” 包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。

验证方法比较

仅仅从验证方法比较:

  • commons-validator除了通用验证方法外,还支持国际通用数字标准验证,比如:IBAN (International Bank Account Number) ISSN(International Standard Serial Number) ISBN(International Standard Book Number)
  • hutool(Validator)通用验证方法与commons-validator基本一致,由于国人开源,验证方法较“中国”化些,比如:身份证、手机号、车牌号、邮政编码、社会统一信用代码、是否汉字等。

PS:hutool作者问题交流和合并 PR 那是极快的。

验证测试工程(基于Gradle)

Gradle 配置文件

plugins {
    id 'java'
}

group 'com.jlh'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.testng:testng:6.14.3'
    compile 'commons-validator:commons-validator:1.7'
    compile 'cn.hutool:hutool-all:5.4.0'
}

验证方法使用演示

package com.jlh.validator;

import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.IdcardUtil;
import org.apache.commons.validator.GenericValidator;
import org.apache.commons.validator.routines.InetAddressValidator;
import org.testng.Assert;
import org.testng.annotations.Test;

import java.util.UUID;

/**
 * 验证框架测试
 *
 * @Author:jiangliheng
 * @Date:2020/8/28 13:31
 */
public class ValidatorTest {

    /**
     * apache commons validator 使用演示
     */
    @Test
    public void commonsValidatorTest() {
        // null 或 空断言
        Assert.assertTrue(GenericValidator.isBlankOrNull(""));
        Assert.assertTrue(GenericValidator.isBlankOrNull(null));
        // int,其他类型一样:byte,short,float,double,long
        Assert.assertTrue(GenericValidator.isInt("1"));
        // 日期
        Assert.assertTrue(GenericValidator.isDate("20200829", "yyyyMMdd",true));
        // int 在指定范围内,其他类型一样:byte,short,float,double,long
        Assert.assertTrue(GenericValidator.isInRange(1, 0,2));
        // int 最大最小,其他类型一样:float,double,long
        Assert.assertTrue(GenericValidator.minValue(1, 1));
        Assert.assertTrue(GenericValidator.maxValue(1, 1));
        // 字符串 最大最小长度
        Assert.assertTrue(GenericValidator.maxLength("daodaotest", 10));
        Assert.assertTrue(GenericValidator.minLength("daodaotest", 10));
        // 正则表达式
        Assert.assertTrue(GenericValidator.matchRegexp("daodaotest", "^d.*t$"));
        // 信用卡验证
        Assert.assertTrue(GenericValidator.isCreditCard("6227612145830440"));
        // url
        Assert.assertTrue(GenericValidator.isUrl("http://www.baidu.com"));
        // email
        Assert.assertTrue(GenericValidator.isEmail("dao@test.com"));
        // ip
        Assert.assertTrue(InetAddressValidator.getInstance().isValid("192.168.1.1"));
        Assert.assertTrue(InetAddressValidator.getInstance().isValid("CDCD:910A:2222:5498:8475:1111:3900:2020"));
    }

    /**
     * hutools validator 使用演示
     */
    @Test
    public void huTollsValidatorTest() {
        // null 空 布尔
        Assert.assertTrue(Validator.isNull(null));
        Assert.assertTrue(Validator.isNotNull("daodaotest"));
        Assert.assertTrue(Validator.isEmpty(""));
        Assert.assertTrue(Validator.isNotEmpty("daodaotest"));
        Assert.assertTrue(Validator.isTrue(true));
        Assert.assertTrue(Validator.isFalse(false));
        // 相等
        Assert.assertTrue(Validator.equal("daodaotest","daodaotest"));
        // 是否汉字,包含汉字
        Assert.assertTrue(Validator.hasChinese("daodaotest叨叨软件测试"));
        Assert.assertTrue(Validator.isChinese("叨叨软件测试"));
        // 是否为数字
        Assert.assertTrue(Validator.isNumber("1.1"));
        // 是否字母,包括大写和小写字母
        Assert.assertTrue(Validator.isWord("daodaotest"));
        // 是否为英文字母 、数字和下划线, 还支持:大写和小写字母和汉字(isLetter)
        Assert.assertTrue(Validator.isGeneral("dao_1"));
        // 是否全为大写或小写字母
        Assert.assertTrue(Validator.isLowerCase("daodaotest"));
        Assert.assertTrue(Validator.isUpperCase("DAODAOTEST"));
        // 检查给定的数字是否在指定范围内
        Assert.assertTrue(Validator.isBetween(1,1,1));
        // 生日
        Assert.assertTrue(Validator.isBirthday("20200830"));
        // 18位 身份证号格式校验,已经提 PR,改为调用 IdcardUtil 的方法,估计5.4.1 版本更新
        Assert.assertTrue(Validator.isCitizenId("11010119900307299X"));
        // 身份证校验,支持18位、15位和港澳台的10位
        // 支持:10位(isValidCard10),15位(isValidCard15),18位(isValidCard18),香港(isValidHKCard),台湾(isValidTWCard)
        Assert.assertTrue(IdcardUtil.isValidCard("11010119900307299X"));
        Assert.assertTrue(IdcardUtil.isValidCard18("11010119900307299X"));
        // 统一社会信用代码(营业执照注册号)
        Assert.assertTrue(Validator.isCreditCode("91350500676532779B"));
        // 中国车牌号
        Assert.assertTrue(Validator.isPlateNumber("京A88888"));
        // 邮编
        Assert.assertTrue(Validator.isZipCode("100000"));
        // uuid
        Assert.assertTrue(Validator.isUUID(UUID.randomUUID().toString()));
        // 正则表达式
        Assert.assertTrue(Validator.isMatchRegex("^d.*t$","daodaotest"));
        // 手机号
        Assert.assertTrue(Validator.isMobile("13888888888"));
        // url
        Assert.assertTrue(Validator.isUrl("http://www.baidu.com"));
        // email
        Assert.assertTrue(Validator.isEmail("dao@test.com"));
        // ip
        Assert.assertTrue(Validator.isIpv4("192.168.1.1"));
        Assert.assertTrue(Validator.isIpv6("CDCD:910A:2222:5498:8475:1111:3900:2020"));
    }

}

微信公众号:daodaotest

标签:assertTrue,Java,daodaotest,GenericValidator,commons,hutool,Assert,Validator,vali
来源: https://www.cnblogs.com/daodaotest/p/13584236.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有