diff -Naur ../Django-1.1-orig/django/contrib/auth/forms.py ./django/contrib/auth/forms.py
--- ../Django-1.1-orig/django/contrib/auth/forms.py	2009-09-29 21:56:04.000000000 +0200
+++ ./django/contrib/auth/forms.py	2009-09-29 22:07:56.000000000 +0200
@@ -11,9 +11,9 @@
     """
     A form that creates a user, with no privileges, from the given username and password.
     """
-    username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$',
-        help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
-        error_message = _("This value must contain only letters, numbers and underscores."))
+    username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$',
+        help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
+        error_message = _("This value may contain only letters, numbers and @/./+/-/_ characters."))
     password1 = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
     password2 = forms.CharField(label=_("Password confirmation"), widget=forms.PasswordInput)
 
@@ -44,9 +44,9 @@
         return user
 
 class UserChangeForm(forms.ModelForm):
-    username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^\w+$',
-        help_text = _("Required. 30 characters or fewer. Alphanumeric characters only (letters, digits and underscores)."),
-        error_message = _("This value must contain only letters, numbers and underscores."))
+    username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$',
+        help_text = _("Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."),
+        error_message = _("This value may contain only letters, numbers and @/./+/-/_ characters."))
     
     class Meta:
         model = User
