2014-08-27 19 views
7

Oto mój kod:walidacja Regex z WTForms i 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') 

więc problem istnieje w wierszu 3. Chcę nazwa użytkownika będzie tylko alfa znaki numeryczne. Z jakiegoś powodu to wyrażenie sprawdza tylko pierwszy znak. Czy istnieje powód, dla którego symbol + nie działa? Dzięki.

+1

O ile się nie mylę, "\ w +" oznacza "jedną lub więcej postaci \ w", myślę, że chcesz r '\ w +', aby zapobiec ucieczce – user2085282

+0

@ user2085282 Tak, to też nie działa. ale myślę, że to prawdopodobnie ma coś wspólnego z ucieczką ... – mpn

Odpowiedz

11

Wymiana regex z

'^\w+$' 

rozwiązać ten problem.