这是我的代码:
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行。我希望用户名只能是字母数字字符。由于某种原因,此正则表达式仅检查第一个字符。为什么+符号在这里不起作用?谢谢。
用正则表达式替换
'^\w+$'
解决了问题。
我知道很久以前就已经回答了,但是我发现在WTForms上提供字母数字验证的另一个选项是AlphaNumeric()
from wtforms_validators import AlphaNumeric
...
class SignupForm(Form):
login_id = StringField('login Id', [DataRequired(), AlphaNumeric()])