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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BirdMan98

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值