hutool.core.util.check¶
校验码计算工具类
对应 Java cn.hutool.core.util 的校验码相关功能。 提供 EAN/UPC 条形码校验位和 Verhoeff 校验位算法,以及通用数据校验方法。
Module Contents¶
Classes¶
校验码计算工具类,提供各种校验码算法。 |
API¶
- class hutool.core.util.check.CheckUtil¶
校验码计算工具类,提供各种校验码算法。
包含以下算法:
EAN/UPC/NVE 校验位:广泛用于商品条形码
Verhoeff 校验位:基于二面体群 D₅,可检测所有单字符错误和相邻换位错误
- static ean_digit(digits: str) str¶
计算 EAN/UPC/NVE 条形码的校验位。
算法:从右向左,奇数位乘 3、偶数位乘 1,求和后取模 10 的补数。
- 参数:
digits – 条形码数字字符串(不含校验位)
- 返回:
校验位字符串(单个数字字符)
>>> CheckUtil.ean_digit('400599871650') '2' >>> CheckUtil.ean_digit('1234567890123') '1'
- static verify_ean(code: str) bool¶
验证 EAN/UPC 条形码的校验码是否正确。
- 参数:
code – 完整的条形码字符串(含校验位)
- 返回:
校验码是否正确
>>> CheckUtil.verify_ean('4005998000007') True >>> CheckUtil.verify_ean('4005998000000') False >>> CheckUtil.verify_ean('foobar') False
- _VERHOEFF_D = ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9), (1, 2, 3, 4, 0, 6, 7, 8, 9, 5), (2, 3, 4, 0, 1, 7, 8, 9, 5, 6), (3,...¶
- _VERHOEFF_INV = (0, 4, 3, 2, 1, 5, 6, 7, 8, 9)¶
- _VERHOEFF_P = ((0, 1, 2, 3, 4, 5, 6, 7, 8, 9), (1, 5, 7, 6, 2, 8, 3, 0, 9, 4), (5, 8, 0, 3, 7, 9, 6, 1, 4, 2), (8,...¶
- static verhoeff_digit(digits: str) str¶
计算 Verhoeff 校验位(基于二面体群 D₅)。
Verhoeff 算法可以检测所有单字符错误和相邻字符换位错误, 优于传统的模 10 校验。
- 参数:
digits – 数字字符串(不含校验位)
- 返回:
校验位字符串(单个数字字符)
>>> CheckUtil.verhoeff_digit('123456654321') '9' >>> CheckUtil.verhoeff_digit('1') '5'
- static verify_verhoeff(digits_with_check: str) bool¶
验证带 Verhoeff 校验位的数字字符串是否合法。
- 参数:
digits_with_check – 含校验位的数字字符串
- 返回:
校验位是否正确
>>> CheckUtil.verify_verhoeff('1234566543219') True >>> CheckUtil.verify_verhoeff('1234566543210') False
- static build_verhoeff_id(prefix: str, number: int, length: int = 4) str¶
生成带 Verhoeff 校验位的 ID 字符串。
将数字左补零到指定长度后,追加 Verhoeff 校验位,再拼接前缀。
- 参数:
prefix – ID 前缀
number – 数字编号
length – 数字部分的最小长度,默认为 4
- 返回:
带校验位的完整 ID 字符串
>>> CheckUtil.build_verhoeff_id('Foo', 1) 'Foo00011' >>> CheckUtil.build_verhoeff_id('Foo', 1, length=8) 'Foo000000017'
- static is_mac(text: str) bool¶
校验 MAC 地址格式。
支持
XX:XX:XX:XX:XX:XX和XX-XX-XX-XX-XX-XX格式(不区分大小写)。- 参数:
text – 待校验的字符串
- 返回:
是否为合法的 MAC 地址
>>> CheckUtil.is_mac('00:1A:2B:3C:4D:5E') True >>> CheckUtil.is_mac('00-1A-2B-3C-4D-5E') True >>> CheckUtil.is_mac('invalid') False
- static is_chinese(text: str) bool¶
判断字符串是否全部由中文字符组成。
- 参数:
text – 待校验的字符串
- 返回:
是否全部为中文字符
>>> CheckUtil.is_chinese('你好世界') True >>> CheckUtil.is_chinese('你好world') False
- static is_english(text: str) bool¶
判断字符串是否全部由英文字母组成。
- 参数:
text – 待校验的字符串
- 返回:
是否全部为英文字母
>>> CheckUtil.is_english('Hello') True >>> CheckUtil.is_english('Hello123') False
- static is_symbol(text: str) bool¶
判断字符串是否全部由符号(非字母数字和空白)组成。
- 参数:
text – 待校验的字符串
- 返回:
是否全部为符号
>>> CheckUtil.is_symbol('!@#$%') True >>> CheckUtil.is_symbol('!@#abc') False
- static contains_url(text: str) bool¶
判断字符串中是否包含 URL。
- 参数:
text – 待检查的字符串
- 返回:
是否包含 URL
>>> CheckUtil.contains_url('visit https://example.com now') True >>> CheckUtil.contains_url('no url here') False
- static is_blank_line(text: str) bool¶
判断字符串是否为空白行(仅含空白字符或为空)。
- 参数:
text – 待校验的字符串
- 返回:
是否为空白行
>>> CheckUtil.is_blank_line(' ') True >>> CheckUtil.is_blank_line('hello') False
- static is_qq(text: str) bool¶
校验 QQ 号码格式。
QQ 号为 5~11 位数字,且不以 0 开头。
- 参数:
text – 待校验的字符串
- 返回:
是否为合法的 QQ 号码
>>> CheckUtil.is_qq('123456789') True >>> CheckUtil.is_qq('01234') False >>> CheckUtil.is_qq('123') False
- static is_date_time(text: str) bool¶
校验日期时间格式(
YYYY-MM-DD HH:mm:ss)。会检查日期和时间的值范围合法性。
- 参数:
text – 待校验的字符串
- 返回:
是否为合法的日期时间格式
>>> CheckUtil.is_date_time('2024-01-15 08:30:00') True >>> CheckUtil.is_date_time('2024-13-01 00:00:00') False
- static is_post_code(text: str) bool¶
校验邮政编码格式(中国 6 位邮编)。
- 参数:
text – 待校验的字符串
- 返回:
是否为合法的邮政编码
>>> CheckUtil.is_post_code('100000') True >>> CheckUtil.is_post_code('1234') False
- _RE_GENERAL = 'compile(...)'¶
- _RE_GENERAL_WITH_CHINESE = 'compile(...)'¶
- _RE_IPV4 = 'compile(...)'¶
- _RE_IPV6 = 'compile(...)'¶
- _RE_URL = 'compile(...)'¶
- _RE_UUID = 'compile(...)'¶
- _RE_MOBILE = 'compile(...)'¶
- _RE_MONEY = 'compile(...)'¶
- _RE_HEX = 'compile(...)'¶
- _RE_WORD = 'compile(...)'¶
- _RE_LETTER = None¶
- _RE_NUMBER = 'compile(...)'¶
- _RE_ZIP_CODE = 'compile(...)'¶
- _RE_CITIZEN_ID = 'compile(...)'¶
- _RE_CREDIT_CODE = 'compile(...)'¶
- _RE_CHINESE_NAME = 'compile(...)'¶
- _RE_PLATE_NUMBER = 'compile(...)'¶
- _RE_CAR_VIN = 'compile(...)'¶
- _RE_CAR_DRIVING_LICENCE = 'compile(...)'¶
- _RE_BIRTHDAY = 'compile(...)'¶
- _RE_HAS_CHINESE = 'compile(...)'¶
- _RE_HAS_NUMBER = 'compile(...)'¶
- static is_email(value: str) bool¶
校验是否为合法的邮箱地址(RFC 5322 规范)。
- 参数:
value – 待校验的字符串
- 返回:
是否为合法邮箱
>>> CheckUtil.is_email('test@example.com') True >>> CheckUtil.is_email('invalid') False
- static is_ipv4(value: str) bool¶
校验是否为合法的 IPv4 地址。
- 参数:
value – 待校验的字符串
- 返回:
是否为合法 IPv4 地址
>>> CheckUtil.is_ipv4('192.168.1.1') True >>> CheckUtil.is_ipv4('256.0.0.1') False
- static is_ipv6(value: str) bool¶
校验是否为合法的 IPv6 地址。
- 参数:
value – 待校验的字符串
- 返回:
是否为合法 IPv6 地址
>>> CheckUtil.is_ipv6('::1') True >>> CheckUtil.is_ipv6('fe80::1') True >>> CheckUtil.is_ipv6('invalid') False
- static is_url(value: str) bool¶
校验是否为合法的 URL。
- 参数:
value – 待校验的字符串
- 返回:
是否为合法 URL
>>> CheckUtil.is_url('https://example.com') True >>> CheckUtil.is_url('not_a_url') False
- static is_uuid(value: str) bool¶
校验是否为合法的 UUID。
- 参数:
value – 待校验的字符串
- 返回:
是否为合法 UUID
>>> CheckUtil.is_uuid('550e8400-e29b-41d4-a716-446655440000') True >>> CheckUtil.is_uuid('invalid') False
- static is_mobile(mobile: str) bool¶
校验是否为中国大陆手机号(严格模式)。
支持
+86、86、0前缀,第二位为 3-9。- 参数:
mobile – 待校验的字符串
- 返回:
是否为合法手机号
>>> CheckUtil.is_mobile('13800138000') True >>> CheckUtil.is_mobile('+8613800138000') True >>> CheckUtil.is_mobile('12345678901') False
- static is_plate_number(plate_number: str) bool¶
校验是否为中国车牌号(含新能源车牌)。
- 参数:
plate_number – 待校验的字符串
- 返回:
是否为合法车牌号
>>> CheckUtil.is_plate_number('京A12345') True >>> CheckUtil.is_plate_number('沪AF12345') True >>> CheckUtil.is_plate_number('invalid') False
- static is_car_vin(vin: str) bool¶
校验是否为合法的车辆识别码(VIN)。
- 参数:
vin – 待校验的字符串
- 返回:
是否为合法 VIN
>>> CheckUtil.is_car_vin('LSVCA2A49GN202573') True >>> CheckUtil.is_car_vin('invalid') False
- static is_car_driving_licence(licence: str) bool¶
校验是否为合法的驾驶证号(12 位数字)。
- 参数:
licence – 待校验的字符串
- 返回:
是否为合法驾驶证号
>>> CheckUtil.is_car_driving_licence('123456789012') True >>> CheckUtil.is_car_driving_licence('123') False
- static is_birthday(birthday: str) bool¶
校验是否为合法的生日日期。
支持多种分隔符:
-、/、.、年月日。- 参数:
birthday – 待校验的字符串
- 返回:
是否为合法生日
>>> CheckUtil.is_birthday('2000-01-15') True >>> CheckUtil.is_birthday('2000年01月15日') True >>> CheckUtil.is_birthday('2000-13-01') False
- static is_chinese_name(name: str) bool¶
校验是否为合法的中文姓名(2-60 个汉字,含
·)。- 参数:
name – 待校验的字符串
- 返回:
是否为合法中文姓名
>>> CheckUtil.is_chinese_name('张三') True >>> CheckUtil.is_chinese_name('迪丽热巴·迪力木拉提') True >>> CheckUtil.is_chinese_name('张') False
- static is_credit_code(credit_code: str) bool¶
校验是否为合法的统一社会信用代码。
- 参数:
credit_code – 待校验的字符串
- 返回:
是否为合法信用代码
>>> CheckUtil.is_credit_code('91350100M000100Y43') True >>> CheckUtil.is_credit_code('invalid') False
- static is_citizen_id(id_card: str) bool¶
校验是否为合法的 18 位居民身份证号(含校验码验证)。
- 参数:
id_card – 待校验的字符串
- 返回:
是否为合法身份证号
>>> CheckUtil.is_citizen_id('11010519491231002X') True >>> CheckUtil.is_citizen_id('123456789012345678') False
- static is_money(money: str) bool¶
校验是否为合法的金额格式(正整数或正小数)。
- 参数:
money – 待校验的字符串
- 返回:
是否为合法金额
>>> CheckUtil.is_money('100') True >>> CheckUtil.is_money('99.99') True >>> CheckUtil.is_money('-10') False
- static is_general(value: str) bool¶
校验是否为通用字符串(字母、数字、下划线,即
\w+)。- 参数:
value – 待校验的字符串
- 返回:
是否为通用字符串
>>> CheckUtil.is_general('hello_123') True >>> CheckUtil.is_general('hello 123') False
- static is_general_with_chinese(value: str) bool¶
校验是否为含中文的通用字符串(中文、字母、数字、下划线)。
- 参数:
value – 待校验的字符串
- 返回:
是否为含中文通用字符串
>>> CheckUtil.is_general_with_chinese('你好abc_123') True >>> CheckUtil.is_general_with_chinese('hello 你好') False
- static is_word(value: str) bool¶
校验是否全部由英文字母组成(不含数字和符号)。
- 参数:
value – 待校验的字符串
- 返回:
是否全部为字母
>>> CheckUtil.is_word('Hello') True >>> CheckUtil.is_word('Hello123') False
- static is_hex(value: str) bool¶
校验是否为合法的十六进制字符串。
- 参数:
value – 待校验的字符串
- 返回:
是否为十六进制字符串
>>> CheckUtil.is_hex('0A1B2C') True >>> CheckUtil.is_hex('GHI') False
- static is_letter(value: str) bool¶
校验是否全部由英文字母组成。
与
is_word()等价。- 参数:
value – 待校验的字符串
- 返回:
是否全部为字母
>>> CheckUtil.is_letter('abc') True >>> CheckUtil.is_letter('abc123') False
- static is_number(value: str) bool¶
校验是否全部由数字组成。
- 参数:
value – 待校验的字符串
- 返回:
是否全部为数字
>>> CheckUtil.is_number('12345') True >>> CheckUtil.is_number('123a') False
- static is_zip_code(zip_code: str) bool¶
校验是否为中国邮政编码(6 位数字)。
与
is_post_code()等价。- 参数:
zip_code – 待校验的字符串
- 返回:
是否为合法邮编
>>> CheckUtil.is_zip_code('100000') True >>> CheckUtil.is_zip_code('1234') False
- static is_between(value: Any, min_val: Any, max_val: Any) bool¶
校验值是否在指定范围内(包含边界)。
支持数值、字符串、日期等可比较类型。
- 参数:
value – 待校验的值
min_val – 最小值
max_val – 最大值
- 返回:
是否在范围内
>>> CheckUtil.is_between(5, 1, 10) True >>> CheckUtil.is_between('c', 'a', 'z') True >>> CheckUtil.is_between(0, 1, 10) False
- static has_chinese(value: str) bool¶
判断字符串中是否包含中文字符。
与
is_chinese()(全部为中文)不同,此方法检测是否包含。- 参数:
value – 待检测的字符串
- 返回:
是否包含中文
>>> CheckUtil.has_chinese('hello你好') True >>> CheckUtil.has_chinese('hello') False
- static has_number(value: str) bool¶
判断字符串中是否包含数字。
- 参数:
value – 待检测的字符串
- 返回:
是否包含数字
>>> CheckUtil.has_number('hello123') True >>> CheckUtil.has_number('hello') False
- static is_null(obj: Any) bool¶
判断对象是否为
None。- 参数:
obj – 待判断的对象
- 返回:
是否为 None
>>> CheckUtil.is_null(None) True >>> CheckUtil.is_null('') False
- static is_not_null(obj: Any) bool¶
判断对象是否不为
None。- 参数:
obj – 待判断的对象
- 返回:
是否不为 None
>>> CheckUtil.is_not_null('hello') True >>> CheckUtil.is_not_null(None) False
- static is_empty(value: Any) bool¶
判断值是否为空(
None、空字符串、空集合、空字典)。- 参数:
value – 待判断的值
- 返回:
是否为空
>>> CheckUtil.is_empty(None) True >>> CheckUtil.is_empty('') True >>> CheckUtil.is_empty([]) True >>> CheckUtil.is_empty('hello') False
- static is_not_empty(value: Any) bool¶
判断值是否非空。
- 参数:
value – 待判断的值
- 返回:
是否非空
>>> CheckUtil.is_not_empty('hello') True >>> CheckUtil.is_not_empty('') False
- static is_true_bool(value: Any) bool¶
判断值是否为
True。- 参数:
value – 待判断的值
- 返回:
是否为 True
>>> CheckUtil.is_true_bool(True) True >>> CheckUtil.is_true_bool(1) False
- static is_false_bool(value: Any) bool¶
判断值是否为
False。- 参数:
value – 待判断的值
- 返回:
是否为 False
>>> CheckUtil.is_false_bool(False) True >>> CheckUtil.is_false_bool(0) False
- static validate_match_regex(value: str, regex: str, error_msg: Optional[str] = None) None¶
校验值是否匹配指定的正则表达式,失败抛出异常。
- 参数:
value – 待校验的值
regex – 正则表达式
error_msg – 自定义错误消息
- 抛出:
ValidateException – 正则不匹配时抛出
- static validate_mac(mac: str, error_msg: Optional[str] = None) None¶
校验 MAC 地址,失败抛出异常。
- 参数:
mac – 待校验的字符串
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static check_index_limit(index: int, size: int) int¶
校验索引是否在合法范围内(
0 <= index < size)。- 参数:
index – 索引值
size – 集合大小
- 返回:
校验通过的索引值
- 抛出:
ValidateException – 索引越界时抛出
>>> CheckUtil.check_index_limit(2, 5) 2
- static validate_email(value: str, error_msg: Optional[str] = None) None¶
校验邮箱地址,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_ipv4(value: str, error_msg: Optional[str] = None) None¶
校验 IPv4 地址,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_ipv6(value: str, error_msg: Optional[str] = None) None¶
校验 IPv6 地址,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_url(value: str, error_msg: Optional[str] = None) None¶
校验 URL,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_uuid(value: str, error_msg: Optional[str] = None) None¶
校验 UUID,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_mobile(value: str, error_msg: Optional[str] = None) None¶
校验手机号,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_plate_number(value: str, error_msg: Optional[str] = None) None¶
校验车牌号,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_car_vin(value: str, error_msg: Optional[str] = None) None¶
校验车辆识别码(VIN),失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_car_driving_licence(value: str, error_msg: Optional[str] = None) None¶
校验驾驶证号,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_birthday(value: str, error_msg: Optional[str] = None) None¶
校验生日日期,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_chinese(value: str, error_msg: Optional[str] = None) None¶
校验是否全部为中文字符,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_chinese_name(value: str, error_msg: Optional[str] = None) None¶
校验中文姓名,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_credit_code(value: str, error_msg: Optional[str] = None) None¶
校验统一社会信用代码,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_citizen_id_number(value: str, error_msg: Optional[str] = None) None¶
校验身份证号,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_money(value: str, error_msg: Optional[str] = None) None¶
校验金额格式,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_general(value: str, error_msg: Optional[str] = None) None¶
校验通用字符串(
\w+),失败抛出异常。- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_general_with_chinese(value: str, error_msg: Optional[str] = None) None¶
校验含中文通用字符串,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_word(value: str, error_msg: Optional[str] = None) None¶
校验是否全部为字母,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_hex(value: str, error_msg: Optional[str] = None) None¶
校验十六进制字符串,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_letter(value: str, error_msg: Optional[str] = None) None¶
校验是否全部为字母,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_number(value: str, error_msg: Optional[str] = None) None¶
校验是否全部为数字,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_zip_code(value: str, error_msg: Optional[str] = None) None¶
校验邮编,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_between(value: Any, min_val: Any, max_val: Any, error_msg: Optional[str] = None) None¶
校验值是否在范围内,失败抛出异常。
- 参数:
value – 待校验的值
min_val – 最小值
max_val – 最大值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_not_empty(value: Any, error_msg: Optional[str] = None) None¶
校验值是否非空,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_not_null(value: Any, error_msg: Optional[str] = None) None¶
校验值是否非
None,失败抛出异常。- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_null(value: Any, error_msg: Optional[str] = None) None¶
校验值是否为
None,失败抛出异常。- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_empty(value: Any, error_msg: Optional[str] = None) None¶
校验值是否为空,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_true(value: Any, error_msg: Optional[str] = None) None¶
校验值是否为
True,失败抛出异常。- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_false(value: Any, error_msg: Optional[str] = None) None¶
校验值是否为
False,失败抛出异常。- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_equal(obj1: Any, obj2: Any, error_msg: Optional[str] = None) None¶
校验两个对象是否相等,失败抛出异常。
- 参数:
obj1 – 第一个对象
obj2 – 第二个对象
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_not_equal(obj1: Any, obj2: Any, error_msg: Optional[str] = None) None¶
校验两个对象是否不相等,失败抛出异常。
- 参数:
obj1 – 第一个对象
obj2 – 第二个对象
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_not_empty_and_equal(value: Any, obj: Any, error_msg: Optional[str] = None) None¶
校验值非空且与指定对象相等,失败抛出异常。
- 参数:
value – 待校验的值
obj – 期望相等的对象
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_not_empty_and_not_equal(value: Any, obj: Any, error_msg: Optional[str] = None) None¶
校验值非空且与指定对象不相等,失败抛出异常。
- 参数:
value – 待校验的值
obj – 期望不相等的对象
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_upper_case(value: str, error_msg: Optional[str] = None) None¶
校验字符串是否全部为大写,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static validate_lower_case(value: str, error_msg: Optional[str] = None) None¶
校验字符串是否全部为小写,失败抛出异常。
- 参数:
value – 待校验的值
error_msg – 自定义错误消息
- 抛出:
ValidateException – 校验失败时抛出
- static is_phone_number(value: str) bool¶
验证手机号(严格正则,别名 is_mobile)。
- 参数:
value – 手机号字符串
- 返回:
是否为有效手机号
- static is_bank_card(card_no: str) bool¶
验证银行卡号(Luhn 算法)。
银行卡号长度通常为 16-19 位,使用 Luhn 算法校验。
- 参数:
card_no – 银行卡号
- 返回:
是否为有效银行卡号
CheckUtil.is_bank_card("6222020200011111111") -> bool
- static is_date(value: str) bool¶
验证日期格式。
支持格式:YYYY-MM-DD、YYYY/MM/DD、YYYYMMDD、YYYY.MM.DD。
- 参数:
value – 日期字符串
- 返回:
是否为有效日期格式
- static is_ip(value: str) bool¶
验证 IP 地址(兼容 IPv4/IPv6)。
- 参数:
value – IP 地址字符串
- 返回:
是否为有效 IP 地址
- static is_unicode(value: str) bool¶
验证字符串是否为有效的 Unicode 字符串。
Python 3 的 str 本身就是 Unicode,此方法检查字符串是否包含 有效的 Unicode 字符(无代理对等非法字符)。
- 参数:
value – 字符串
- 返回:
是否为有效 Unicode 字符串
- static dpd_check_digit(digits: str) str¶
计算 DPD 包裹单校验位。
DPD 校验算法:从右到左,偶数位乘 3,奇数位乘 1,求和后取模 10。
- 参数:
digits – 14 位数字
- 返回:
校验位字符串(1 位数字)
- 抛出:
ValueError – 输入不合法时
digit = CheckUtil.dpd_check_digit("01234567890123")