Flask-WTForms表单验证中常见的正则表达式

在 Flask-WTForms 的表单验证中,wtforms.validators.Regexp 允许使用 正则表达式 进行自定义验证。以下是一些 常见的正则表达式,以及它们在 Flask-WTF 中的使用方法。


1. 常见正则表达式

验证类型 正则表达式 说明
用户名 ^[a-zA-Z0-9_]{3,20}$ 允许字母、数字、下划线,长度 3-20
密码 ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,12}$ 必须包含 字母+数字,6-12 位
手机号(中国) ^1[3-9]\d{9}$ 1 开头的 11 位数字
邮箱 ^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$ 电子邮件格式
身份证号(中国) `^\d{6}(18 19
IP 地址 ^(?:\d{1,3}\.){3}\d{1,3}$ IPv4 地址
日期(YYYY-MM-DD) `^\d{4}-(0[1-9] 1[0-2])-(0[1-9]
URL ^https?://[^\s/$.?#].[^\s]*$ 网址格式
纯中文 ^[\u4e00-\u9fa5]+$ 仅允许中文字符

2. 在 Flask-WTF 中使用

wtforms.validators.Regexp 里添加正则表达式进行验证,例如:

python 复制代码
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Regexp

class RegisterForm(FlaskForm):
    username = StringField('用户名', validators=[
        DataRequired(),
        Regexp(r'^[a-zA-Z0-9_]{3,20}$', message="用户名只能包含字母、数字、下划线,长度3-20")
    ])
    
    password = PasswordField('密码', validators=[
        DataRequired(),
        Regexp(r'^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6,12}$', message="密码必须包含字母和数字,长度6-12位")
    ])
    
    phone = StringField('手机号', validators=[
        DataRequired(),
        Regexp(r'^1[3-9]\d{9}$', message="手机号格式不正确")
    ])
    
    submit = SubmitField('注册')

Regexp(r'正则', message='错误提示') 添加正则验证

错误信息 会在 form.errors 中返回给前端


3. 在 HTML 页面显示错误

templates/register.html 里:

html 复制代码
<form method="POST">
    {{ form.hidden_tag() }}

    <p>{{ form.username.label }}<br>
       {{ form.username(size=30) }}<br>
       {% for error in form.username.errors %}
           <span style="color:red;">{{ error }}</span>
       {% endfor %}
    </p>

    <p>{{ form.password.label }}<br>
       {{ form.password(size=30) }}<br>
       {% for error in form.password.errors %}
           <span style="color:red;">{{ error }}</span>
       {% endfor %}
    </p>

    <p>{{ form.phone.label }}<br>
       {{ form.phone(size=30) }}<br>
       {% for error in form.phone.errors %}
           <span style="color:red;">{{ error }}</span>
       {% endfor %}
    </p>

    <p>{{ form.submit() }}</p>
</form>

当输入不符合正则表达式时,会在页面显示错误提示。


4. 结论

  1. Regexp() 可用于自定义格式验证(用户名、密码、手机号等)。
  2. 错误消息 可用 message="自定义错误提示" 指定,并在前端显示。
  3. 配合 Flask-WTF ,可以 轻松实现表单验证 并提升用户体验。

如果你有具体的表单需求,可以提供,我帮你写具体代码!🚀

相关推荐
愚戏师4 分钟前
Python:函数式编程
开发语言·python·算法
iku!!13 分钟前
【Python+HTTP接口】POST请求不同请求头构造
python·http
DogDaoDao18 分钟前
Conda 虚拟环境创建:加不加 Python 版本的深度剖析
开发语言·人工智能·pytorch·python·深度学习·conda
Leo来编程26 分钟前
Python学习第十九天
python·学习
如果是君1 小时前
Ubuntu20.04安装运行DynaSLAM
linux·python·深度学习·神经网络·ubuntu
牛奔1 小时前
Linux 安装配置Anaconda
python·conda
往日情怀酿做酒 V17639296382 小时前
Django项目之订单管理part3
后端·python·django
查理零世2 小时前
【算法】 区间合并(附蓝桥杯真题) python
python·算法·蓝桥杯
人工智能研究所2 小时前
使用OpenCV与Python编写自己的俄罗斯方块小游戏
开发语言·python·opencv
DDD小小小宇宙2 小时前
python列表基础知识
开发语言·windows·python