Flask-wtf 正则表达式和长度验证不起作用


class checkUserName(FlaskForm):
username = StringField('Username',[Length(min=5, max=20),Regexp('[0-9A-Za-z_]+'),DataRequired('Required')])

我想接受像admin这样的数字、字符和下划线之间的仅用户名组合,并拒绝最小长度为5、最大长度为20的像'''''''''''这样的用户名,但验证不起作用,我该如何修复它?

尝试这样更改代码:

username = StringField('Username', validators=[Length(min=5, max=20),Regexp('[0-9A-Za-z_]+'),DataRequired('Required')])

或者像这样:

username = StringField('Username', [validators.Length(min=5, max=20), validators.Regexp('[0-9A-Za-z_]+'), validators.DataRequired('Required')])

如果你想让'''''''''''接受为用户名,你可以这样更改正则表达式:

("[0-9A-Za-z_']+")

这意味着你接受方括号中的一组字符,+意味着前面的字符重复一次或多次。

如果你想只接受admin, admin'''',你可以试试这个:

`("[0-9A-Za-z_]+'*")`
  1. [0-9A-Za-z_]+:接受方括号中的一组重复一次或多次的字符
  2. '*:接受上述字符后的'字符,重复次数为0或以上

我收到以下错误:

NameError: name 'Regexp' is not defined

我就是这样解决的:

from wtforms.validators import Regexp

您可以使用:

from wtforms.validators import Length

最新更新