如何在 Django 网址中允许“@”?
How to allow "@" in django urls?
我希望用户能够在其用户名中选择符号 @
以及字母数字和连字符。然而,这会导致相关正则表达式中的 404:
url(r'^(?P<username>[\w.-]+)/$', 'userprofile.views.profile'),
我尝试了 [\w.-@]
和 [\w.-\@]
但 none 成功了。
如何解决这个问题?
您可以将 @
设为可选。此模式将捕获大多数类似电子邮件的字符串。
(?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
这个问题没有说明电子邮件地址,只是想要用户名中的 @
符号,这就足够了:
url(r'^(?P<username>[\w@\d-]+)/$', 'userprofile.views.profile'),
相关位是:[\w@\d-\.]+
,它匹配至少一个单词字符,一个@
符号*,任何数字,一个连字符或一个点。
* The @
symbol is the only character on a standard 101 keyboard to not have a name!
我希望用户能够在其用户名中选择符号 @
以及字母数字和连字符。然而,这会导致相关正则表达式中的 404:
url(r'^(?P<username>[\w.-]+)/$', 'userprofile.views.profile'),
我尝试了 [\w.-@]
和 [\w.-\@]
但 none 成功了。
如何解决这个问题?
您可以将 @
设为可选。此模式将捕获大多数类似电子邮件的字符串。
(?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
这个问题没有说明电子邮件地址,只是想要用户名中的 @
符号,这就足够了:
url(r'^(?P<username>[\w@\d-]+)/$', 'userprofile.views.profile'),
相关位是:[\w@\d-\.]+
,它匹配至少一个单词字符,一个@
符号*,任何数字,一个连字符或一个点。
* The @
symbol is the only character on a standard 101 keyboard to not have a name!