2014-08-27 12 views
7

Hier ist mein Code:Regex Validierung mit WTForms und 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') 

So ist das Problem an der Linie existiert 3. Ich möchte den Benutzernamen nur alphanumerische Zeichen sein. Aus irgendeinem Grund überprüft diese Regex nur das erste Zeichen. Gibt es einen Grund, warum das Symbol + hier nicht funktioniert? Vielen Dank.

+1

Wenn ich mich nicht irre, bedeutet '\ w +' "eine oder mehrere der Zeichen \ w", ich denke, Sie wollen r '\ w +' verhindern – user2085282

+0

@ user2085282 ja das funktioniert auch nicht. aber ich denke, es hat wahrscheinlich etwas mit Flucht zu tun ... – mpn

Antwort

11

Ersetzen der Regex mit

'^\w+$' 

das Problem gelöst.