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

时间:2020-03-05 10:21:10

标签: python flask flask-wtforms

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

我只想接受数字,字符和下划线之间的用户名组合,例如admin,拒绝用户名,例如''''''''''',最小长度为5,最大长度为20,但是验证不起作用,如何我可以解决吗?

1 个答案:

答案 0 :(得分:0)

尝试像这样更改代码:

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或更多。