当前位置: 首页 > 知识库问答 >
问题:

Django URL正则表达式包含正向斜杠

漆雕育
2023-03-14

我在创建Django URL正则表达式时遇到问题,该正则表达式允许所有字符(包括正斜杠)。更具体地说,我遇到的问题是区分URL参数中使用的正斜杠和URL中用作分隔符的正斜杠。

例如:

我有一个URL,看起来像这样:localhost:8000/jfe/customer/customerNumb/invoice2/portfolio/

这包括3个URL参数:customerNumb、invoice2、portfolio。

我的目标是使参数2可以包含特殊字符,包括“/”,因此第二个参数可以类似于“KJ 02/2017”(不带引号)。

示例:localhost:8000/jfe/customer/customerNumb/KJ02/2017/投资组合/

在使用“KJ 02/2017”的例子中,我很难区分“KJ 02/2017”中的“/”和“/”,这两个“/”分开了arg2和arg3。

我的正则表达式:

url(r'^customer/(?P<customer_number>[0-9]+)/(?P<invoice>[^/]+)/$')
url(r'^customer/(?P<customer_number>[0-9]+)/(?P<invoice>[^/]+)/(?P<portfolio>[^/]+)/$')

我也试过

url(r'^customer/(?P<customer_number>[0-9]+)/(?P<invoice>.+)/$')
url(r'^customer/(?P<customer_number>[0-9]+)/(?P<invoice>.+)/(?P<portfolio>[^/]+)/$')

如果我对URL进行编码:

示例:localhost:8000/jfe/customer/customerNumb/KJ 02/2017/portfolio/regex将对其进行如下解析:

KJ 02/2017/投资组合

当我想:

arg1:customerNumb arg2:KJ 02/2017 arg3:portfolio

有人能帮我理解我在正则表达式中的错误吗?或者让我知道是否有可能在url参数中包含“/”?

非常感谢。

编辑:有人指出我的第二次尝试是有效的,这是真的,但我想提到的是Django似乎在将URL传递给正则表达式之前对其进行了解码。因此,正则表达式将其视为:

localhost:8000/jfe/customer/customerNumb/KJ02/2017/投资组合/

共有2个答案

宗政英才
2023-03-14

我不知道如何创建一个正则表达式来捕获参数时,他们有一个/。为了解决这个问题,我对参数进行了双重编码,这样在访问URL调度程序时就不会完全解码。

谢谢你的帮助

黄景胜
2023-03-14

这难道不行吗

"/[0-9]+(?:-|.|\/)+[a-zA-Z]+(?:-|.|\/)+[0-9]/"
 类似资料:
  • 我需要一些“包含”和“不包含”的正则表达式。通常我会写: 包含:(.*WORD_A.*)$,不包含:(^((?!WORD_A.*)*)$ 如果单独使用,这很好,但我想写一些可以检测到的东西,比如“包含单词A和单词B”(顺序不相关!)和“包含单词A,但不包含单词B)。 基本上,我希望用户可以做出这样的声明“以单词a开头,包含单词B,但不是C和/或以D结尾”,程序返回真/假。最好的办法是只附加正则表达

  • 问题内容: 我想构建一个JS函数,将一个参数列表隐藏到有效路径中(因为我不确定路径的一部分是否带有斜杠) 这是功能: 使用的RegEx匹配了http://regexpal.com上的所有开始和结束斜杠和反斜杠,但是该功能无法正常工作(RegEx不匹配)。此外,Chrome指出 语法错误:无效的正则表达式:/()$ | ^()/:未终止的组 当我只使用RegEx 但是,使用RegEx 提前致谢! 狮

  • 问题内容: 我有此RequestMapping: 我想添加该RequestMapping: 因此,它可以服务于所有“无出发”路线。但是,这会产生冲突,因为“ / route / to-destination-from-departure” URL实际上也与第二个RequestMapping匹配…很公平,所以我的解决方案是指定一个正则表达式: 因此,如果“目标”包含“ -from-”,则Reques

  • 我发现正则表达式不包含101,如下所示: 0*1*0*(1 00 000)*(010)* 我无法理解作者是如何想出这个正则表达式的。所以我只想到了不包含101的字符串: 01000100 我似乎上面的字符串不会与上面的正则表达式匹配。但我不确定。所以尝试在regex101.com上翻译成等效的pcre正则表达式,但也失败了(因为可以看到我的正则表达式甚至不匹配包含单个1的字符串。 我的翻译有什么问

  • 问题内容: 我没有JavaScript方面的丰富经验,但是我正在尝试创建一个标记系统,而不是使用or ,而是使用。 我该如何使用而不是。我尝试做并添加,但是失败了。 问题答案: 您可以这样逃避它。 或只使用indexOf

  • 问题内容: 我有一些复杂的正则表达式,为了便于阅读和维护,需要对其进行注释。Java规范相当简洁,为了使它正常工作,我努力了很长时间。我终于抓住了我的错误,并将其发布为答案,但对于保持正则表达式的任何其他建议,我将不胜感激 作为示例,我想在一个简单的名称解析器中注释(patternS的)子组件: 编辑:我也将感谢(?x)格式的示例。 编辑:@ geowa4有一个很好的建议,可以避免嵌入注释。自从J