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_]+'*")`
[0-9A-Za-z_]+
:接受方括号中的一组重复一次或多次的字符'*
:接受上述字符后的'
字符,重复次数为0或以上
我收到以下错误:
NameError: name 'Regexp' is not defined
我就是这样解决的:
from wtforms.validators import Regexp
您可以使用:
from wtforms.validators import Length