如何在django urls中允许“@”?

时间:2015-02-26 01:14:49

标签: django django-urls

我希望用户能够选择签名@以及用户名中的字母数字和连字符。然而,这导致相关正则表达式中的404:

url(r'^(?P<username>[\w.-]+)/$', 'userprofile.views.profile'),

我尝试了[\w.-@][\w.-\@]但没有效果。

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

问题没有说明电子邮件地址,只想在用户名中使用@符号,这应该足够了:

url(r'^(?P<username>[\w@\d-]+)/$', 'userprofile.views.profile'),

相关位是:[\w@\d-\.]+,它匹配任何单词字符,@符号 * ,任何数字,连字符或点中的至少一个。< / p>

* The @ symbol is the only character on a standard 101 keyboard to not have a name!

答案 1 :(得分:1)

您可以选择@。这种模式将捕获大多数类似电子邮件的字符串。

(?P<username>[-\w]+(?:\@)?[A-Za-z0-9.-]+(?:\.)?[A-Za-z]{2,4})

如果你想捕捉a@a之类的内容,你需要完成所有事情,包括可选的时间段:

(?P<username>[-\w]+(?:\@)?[A-Za-z0-9.-]+(?:\.[A-Za-z]{2,4})?)?

该模式将匹配:

foo@bar.com
foo@bar
foobar