【问题标题】:Pass email as regex in django url在 django url 中将电子邮件作为正则表达式传递
【发布时间】:2015-06-26 17:21:20
【问题描述】:

我正在尝试将电子邮件作为 django URL 中的参数传递。我想在 URL 中传递电子邮件以及普通字符串和数字作为参数。

url(r"search_connections/(?P<data>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$", "search_connections", name="search_connections"),

电子邮件作为参数可以正常工作。但是对于像“abc”这样的普通字符串,它不起作用:

working for "/search_connections/abc@test.com/"
not working for "/search_connections/abc/"

我希望此 URL 对两者都有效。

【问题讨论】:

  • @ 不允许在 URL 的路径中,许多客户端将 ://@ 之间的所有内容视为用户名。

标签: python regex django django-urls


【解决方案1】:

您可以尝试简单地将|(或)与\w+一起使用:

r'search_connections/(?P<data>\w+|[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$'

但是我认为电子邮件的正则表达式并不是匹配所有有效电子邮件的可靠解决方案。

【讨论】:

  • \w+ 破坏了电子邮件正则表达式的目的
猜你喜欢
  • 2013-06-30
  • 2015-08-04
  • 1970-01-01
  • 2011-12-28
  • 2012-01-02
  • 2015-12-03
相关资源
最近更新 更多