Muriel
Muriel

Reputation: 591

Python Flask WTForm Email validation does not allow a dash

I'm looking to validate an email input field for a user in Flask. I'm currently using WTForms Email validation, but this does not allow the user to input a dash as part of their email address. My code is below:

from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired, Email

class RegistrationForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email()])

How can I allow a dash in the email address but still protect against malicious inputs?

Upvotes: 0

Views: 540

Answers (1)

M.javid
M.javid

Reputation: 6647

You must replace Email validator by Regexp for validating special email patterns:

from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired, Regexp

class RegistrationForm(FlaskForm):
    email = StringField(
        'Email',
        validators=[DataRequired(), Regexp(r"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$")]
    )

Upvotes: 1

Related Questions