mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
commit
db6e806f9e
@ -3,6 +3,7 @@ package cn.hutool.core.lang;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.exceptions.ValidateException;
|
||||
import cn.hutool.core.regex.PatternPool;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.CreditCodeUtil;
|
||||
import cn.hutool.core.math.NumberUtil;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
@ -11,6 +12,8 @@ import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.IdcardUtil;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Date;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@ -1046,6 +1049,29 @@ public class Validator {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查给定的日期是否在指定范围内
|
||||
*
|
||||
* @param value 值
|
||||
* @param start 最小值(包含)
|
||||
* @param end 最大值(包含)
|
||||
* @param errorMsg 验证错误的信息
|
||||
* @throws ValidateException 验证异常
|
||||
* @author ZRH 455741807@qq.com
|
||||
*/
|
||||
public static void validateBetween(final Date value, final Date start, final Date end, final String errorMsg) {
|
||||
Assert.notNull(value);
|
||||
Assert.notNull(start);
|
||||
Assert.notNull(end);
|
||||
int c1 = DateUtil.compare(value, start);
|
||||
int c2 = DateUtil.compare(value, end);
|
||||
|
||||
if(c1 >= 0 && c2 <= 0){
|
||||
return;
|
||||
}
|
||||
throw new ValidateException(errorMsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是有效的统一社会信用代码
|
||||
* <pre>
|
||||
@ -1160,4 +1186,46 @@ public class Validator {
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证字符的长度是否符合要求
|
||||
* @param str 字符串
|
||||
* @param min 最小长度
|
||||
* @param max 最大长度
|
||||
* @param errorMsg 错误消息
|
||||
*/
|
||||
public static void validateLength(CharSequence str, int min, int max, String errorMsg) {
|
||||
int len = StrUtil.length(str);
|
||||
if (len < min || len > max) {
|
||||
throw new ValidateException(errorMsg);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证字符串的字节长度是否符合要求,默认采用"utf-8"编码
|
||||
*
|
||||
* @param str 字符串
|
||||
* @param min 最小长度
|
||||
* @param max 最大长度
|
||||
* @param errorMsg 错误消息
|
||||
*/
|
||||
public static void validateByteLength(CharSequence str, int min, int max, String errorMsg) {
|
||||
validateByteLength(str, min, max, CharsetUtil.UTF_8, errorMsg);
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证字符串的字节长度是否符合要求
|
||||
*
|
||||
* @param str 字符串
|
||||
* @param min 最小长度
|
||||
* @param max 最大长度
|
||||
* @param charset 字符编码
|
||||
* @param errorMsg 错误消息
|
||||
*/
|
||||
public static void validateByteLength(CharSequence str, int min, int max, Charset charset, String errorMsg) {
|
||||
int len = StrUtil.byteLength(str, charset);
|
||||
if (len < min || len > max) {
|
||||
throw new ValidateException(errorMsg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,16 @@
|
||||
package cn.hutool.core.lang;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.exceptions.ValidateException;
|
||||
import cn.hutool.core.lang.id.IdUtil;
|
||||
import cn.hutool.core.regex.PatternPool;
|
||||
import cn.hutool.core.text.StrUtil;
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 验证器单元测试
|
||||
*
|
||||
@ -248,6 +253,44 @@ public class ValidatorTest {
|
||||
Assert.assertTrue(Validator.isMatchRegex(PatternPool.URL_HTTP, content));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateBetweenTest(){
|
||||
Date value = DateUtil.parse("2022-08-09 21:22:00");
|
||||
final Date start = DateUtil.parse("2022-08-01 21:22:00");
|
||||
final Date end = DateUtil.parse("2022-09-09 21:22:00");
|
||||
|
||||
Validator.validateBetween(value, start, end, "您选择的日期超出规定范围!");
|
||||
Assert.assertTrue(true);
|
||||
|
||||
final Date value2 = DateUtil.parse("2023-08-09 21:22:00");
|
||||
Assert.assertThrows(ValidateException.class, ()->
|
||||
Validator.validateBetween(value2, start, end, "您选择的日期超出规定范围!")
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateLengthTest() {
|
||||
String s1 = "abc";
|
||||
Assert.assertThrows(ValidateException.class, ()->
|
||||
Validator.validateLength(s1, 6, 8, "请输入6到8位的字符!"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void validateByteLengthTest() {
|
||||
String s1 = "abc";
|
||||
int len1 = StrUtil.byteLength(s1, CharsetUtil.UTF_8);
|
||||
Assert.assertEquals(len1, 3);
|
||||
|
||||
String s2 = "我ab";
|
||||
int len2 = StrUtil.byteLength(s2, CharsetUtil.UTF_8);
|
||||
Assert.assertEquals(len2, 5);
|
||||
|
||||
//一个汉字在utf-8编码下,占3个字节。
|
||||
Assert.assertThrows(ValidateException.class, ()->
|
||||
Validator.validateByteLength(s2, 1, 3, "您输入的字符串长度超出限制!")
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isChineseNameTest(){
|
||||
Assert.assertTrue(Validator.isChineseName("阿卜杜尼亚孜·毛力尼亚孜"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user