【问题标题】:Flask-Wtf Regex and Length Validation don't workingFlask-Wtf 正则表达式和长度验证不起作用
【发布时间】:2020-03-05 10:21:10
【问题描述】:
class checkUserName(FlaskForm):
    username = StringField('Username',[Length(min=5, max=20),Regexp('[0-9A-Za-z_]+'),DataRequired('Required')])

我想只接受数字、字符和下划线之间的用户名组合,如admin,并拒绝最小长度为 5 和最大长度为 20 的用户名,如 ''''''''''',但验证无效,我该如何解决?

【问题讨论】:

    标签: python flask flask-wtforms


    【解决方案1】:

    尝试像这样更改您的代码:

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

    【讨论】:

    • 第三个存在错误。 admin''' 不应该接受。接受第三个字符串。
    • 所以你的意思是接受输入 admin'''',试试修改后的版本。
    • 我希望它不接受这个字符串(admin'')。但是从A到z的单词开始,然后是我不想接受的字符。这就是问题。对不起我的英语
    • 尝试将validators 关键字添加到您的代码中以使其工作。
    【解决方案2】:

    你可以使用:

    from wtforms.validators import Length
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-19
      • 2022-11-23
      • 2015-05-29
      • 1970-01-01
      • 2021-06-18
      • 2018-11-29
      • 2014-04-21
      • 1970-01-01
      相关资源
      最近更新 更多