当前位置: 首页 > news >正文

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}(1819
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 里添加正则表达式进行验证,例如:

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

<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,可以 轻松实现表单验证 并提升用户体验。

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

相关文章:

  • 同一子网通信
  • 操作系统知识点31
  • 【漫话机器学习系列】142.Sigmoid 激活函数(Sigmoid Activation Function)
  • Kubernetes 中metrics-server的采集周期,采集链路是什么样的?
  • 【Hestia Project 数据集】美国化石燃料 CO₂ 排放数据
  • 《论语别裁》第01章 学而(27) 无所适从的礼俗
  • uboot中的.config文件
  • superset部署记录
  • min_element用法
  • pytorch快速入门——手写数字分类GPU加速
  • python-数据类型字符串和列表
  • 【Qt】qrc机制介绍
  • Java实现【将Markdown格式文本转换为纯文本】
  • Python跳动的爱心
  • go数据结构笔记
  • Spring(5)——IoC DI
  • DevExpress WinForms 中 SwiftPlot 图表控件的使用指南
  • DeepSeek:技术教育领域的AI变革者——从理论到实践的全面解析
  • 修改 Macbook 终端窗口的显示信息
  • 【算法】用“龟兔赛跑”的思想原地移除元素
  • 长三角铁路今日预计发送旅客420万人次,有望创单日客发量新高
  • 剑指3000亿产业规模,机器人“武林大会”背后的无锡“野望”
  • 78家公募年度业绩比拼:23家营收净利双升,十强座次微调
  • 【社论】人工智能,年轻的事业
  • 神舟十九号载人飞船因东风着陆场气象原因推迟返回
  • 海尔·2025青岛马拉松两选手被终身禁赛:违规转让号码、穿戴他人号码