Django将随机字符串的正则表达式作为ID

Pro*_*eus 1 python regex django

我需要在我的URL中允许ID匹配

[int]_接着长度22的随机字符串可以是字母或数字,但从来没有具有这种URL不安全字符串作为/+=等例如一个id看起来像这样:

  • 4_h-rbVeqURNqc-nPSj5ojfA
  • 10_81hjsqURNqc-nPPLkaiZ1

这就是Django Docs对标准id匹配的看法......

url(r'^article/(?P<pk>[0-9]+)/?$', views.detail.as_view(), name='article'),
Run Code Online (Sandbox Code Playgroud)

如何匹配/验证我的ID类型与上面的正则表达式?

我已经尝试了[\w|\W]+等,但这不验证也不匹配我的用例

Kas*_*mvd 6

您可以使用以下正则表达式:

\d+_([\w-]+){22}
Run Code Online (Sandbox Code Playgroud)

\w将匹配任何单词字符包含字母字符和字母和字符_.所以[\w-]+将匹配的任何组合\w-与长度为1或更大.

  • 确切地说,`\ w`匹配`[A-Za-z0-9_]`,所以你需要额外的`-`,但不需要额外的`_`. (2认同)