You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中WTForms自定义验证器开发:实现数字:数字格式校验

实现WTForms自定义「数字:数字」格式验证器

没问题!要实现这个要求的格式验证器,咱们可以借助WTForms的自定义验证机制,结合正则表达式来完成,这里提供两种实用的实现方式:

方式一:自定义验证函数(快速简单)

这种方式适合只在单个字段使用的场景,直接写一个验证函数即可:

首先导入所需模块:

from wtforms import StringField, validators, ValidationError
import re

然后定义验证函数:

def validate_match_format(form, field):
    # 正则表达式匹配「数字:数字」格式,确保整个输入符合要求
    format_pattern = r'^\d+:\d+$'
    if not re.match(format_pattern, field.data):
        raise ValidationError('请输入符合「数字:数字」格式的内容,例如 2:1')

最后更新你的字段定义,把这个验证器加入validators列表:

match1 = StringField('Russia-Saudi Arabia', validators=[validators.DataRequired(), validate_match_format])

方式二:自定义验证器类(可复用)

如果多个字段都需要这个格式验证,推荐写成可复用的验证器类:

from wtforms import StringField, validators, ValidationError
import re

class MatchFormatValidator(validators.Validator):
    def __call__(self, form, field):
        format_pattern = r'^\d+:\d+$'
        if not re.match(format_pattern, field.data):
            raise ValidationError('请输入符合「数字:数字」格式的内容,例如 2:1')

使用时直接实例化这个类:

match1 = StringField('Russia-Saudi Arabia', validators=[validators.DataRequired(), MatchFormatValidator()])

可选调整:限制数字位数

如果需要限制数字的位数(比如最多两位数字),只需要修改正则表达式即可,例如:

# 匹配1-2位数字:1-2位数字的格式
format_pattern = r'^\d{1,2}:\d{1,2}$'

这样就能确保输入的数字不会过长,比如12:3或4:56都是合法的,但123:4就会被拦截。

内容的提问来源于stack exchange,提问作者Jacob Singh Risgaard Knudsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:32:29