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}-(01-9 10-2)-(01-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 ,可以 轻松实现表单验证 并提升用户体验。

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

相关推荐
二月夜11 小时前
剖析Java正则表达式回溯问题
java·正则表达式
珺毅同学12 小时前
YOLO生成预测json标签迁移问题
python·yolo·json
骑士雄师12 小时前
18.4 长期记忆可修改版
python
~小先生~12 小时前
Python从入门到放弃(一)
开发语言·python
天佑木枫13 小时前
第2天:变量与数据类型 —— 让程序记住信息
python
Dust-Chasing14 小时前
Claude Code源码剖析 - Claude Code 上下文压缩机制
人工智能·python·ai
Cloud_Shy61815 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第五章 Item 33 - 35)
开发语言·人工智能·笔记·python·学习方法
abcy07121315 小时前
python pandas csv异步后台清洗前端优先返回成功信息
前端·python·pandas
颜酱16 小时前
LangChain使用RAG 入门:让大模型读懂你的私有文档
python·langchain
天天进步201516 小时前
Python全栈项目--校园智能宿舍管理系统
开发语言·python