在 Django 中将电子邮件作为正则表达式传递 url

Pass email as regex in django url

我正在尝试将电子邮件作为参数传递给 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 对两者都有效。

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

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

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