网址格式为: 的域/在startValue / endValue值/内容
这里,startValue和endValue采用int或float数字..
我尝试过:/(\d+)/(\d+)
采用int值
和
/(\d+\.\d+)/(\d+\.\d+)
采用浮动值
但不知道如何将它们组合在一起,它采用两种格式的数字
尝试:
/(\d+)|(\d+\.\d+)/(\d+)|(\d+\.\d+)
浏览器告诉url与视图函数参数不匹配
感谢任何建议!
答案 0 :(得分:6)
由于您始终以整数开头,因此只需使用?
正则表达式运算符使浮点部分可选,并使用非捕获组:
intorfloat_re = "(\d+(?:\.\d+)?)"
..并在网址定义中使用该字符串。
答案 1 :(得分:4)
我知道这已经得到了回答和接受,但是正在寻找正确的正则表达式,这个正在通过我的道路。 因此对给定和接受的答案进行一点调整:
使用
intorfloat_positiveornegative_re = "(-?\d+(?:\.\d+)?)"
如果您希望它接受负整数或正整数或浮点数
顺便说一句,我将这个答案与这个问题的答案结合起来:Regex to match a negative number in Django URL dispatcher?
答案 2 :(得分:2)
你试图从正则表达式匹配中返回太多组。试试这个:
(\d?\.\d+|\d+)
这将匹配0-1位,然后是。,然后是一个或多个数字。它也首先获得浮点数,因此你不会得到第一个数字而不是浮点数。
答案 3 :(得分:1)
这可能很旧,但仅仅是出于同谋,这样的东西可能会更有用和更安全
"-?\d{1,3}(\.\d{1,5})?"
,您可以指定所需范围