hutool.core.util.check

校验码计算工具类

对应 Java cn.hutool.core.util 的校验码相关功能。 提供 EAN/UPC 条形码校验位和 Verhoeff 校验位算法,以及通用数据校验方法。

Module Contents

Classes

CheckUtil

校验码计算工具类,提供各种校验码算法。

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:XXXX-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

校验是否为中国大陆手机号(严格模式)。

支持 +86860 前缀,第二位为 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")