Reputation: 591
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
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