使用WTForms和python进行Regex验证

2024-05-02 18:30:02 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

class CreateUser(Form):
    username = StringField('Username', [
        validators.Regexp('\w+', message="Username must contain only letters numbers or underscore"),
        validators.Length(min=5, max=25, message="Username must be betwen 5 & 25 characters")

    ])

    password = PasswordField('New Password', [
        validators.DataRequired(), 
        validators.EqualTo('confirm', message='Passwords must match')
    ])

    confirm  = PasswordField('Repeat Password')

所以问题就在3号线。我希望用户名只能是字母数字字符。出于某种原因,这个regex只检查第一个字符。+符号在这里不起作用有什么原因吗?谢谢。


Tags: 代码formmessageusernamepassword字符confirmclass
2条回答

我知道这个问题很久以前就有了答案,但是我发现在WTForms上提供字母数字验证的另一个选项是alphanumeric()

from wtforms_validators import AlphaNumeric
...

class SignupForm(Form):
    login_id = StringField('login Id', [DataRequired(), AlphaNumeric()])

这里有更多详细信息https://pypi.org/project/wtforms-validators/

将regex替换为

'^\w+$'

解决了这个问题。

相关问题 更多 >