使用WTForms和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 个回答
2
我知道这个问题很早就有人回答过了,但我发现了另一个可以在WTForms中进行字母数字验证的方法,就是使用AlphaNumeric()
from wtforms_validators import AlphaNumeric
...
class SignupForm(Form):
login_id = StringField('login Id', [DataRequired(), AlphaNumeric()])
更多详细信息可以在这里找到 https://pypi.org/project/wtforms-validators/
25
用下面的正则表达式替换
'^\w+$'
解决了这个问题。