我希望用户能够选择签名@
以及用户名中的字母数字和连字符。然而,这导致相关正则表达式中的404:
url(r'^(?P<username>[\w.-]+)/$', 'userprofile.views.profile'),
我尝试了[\w.-@]
和[\w.-\@]
但没有效果。
如何解决这个问题?
答案 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