Php CodeIgniter路由匹配两个带可选小数的数字

Php CodeIgniter路由匹配两个带可选小数的数字,php,regex,codeigniter,Php,Regex,Codeigniter,尝试匹配以下内容: wrs/time/5/10或wrs/time/5.2/10.55或介于整数和浮点之间的任何内容,对于两个捕获组,最多可选择两位小数 已尝试以下对一个数字有效但对两个组无效的方法:\d{0,2}(\.\d{1,2})? 完整路由尝试: $route['wrs/time/(\d{0,2}(\.\d{1,2})?)/(\d{0,2}(\.\d{1,2})?)'] = 'wrs/trange/$1/$2'; 非常感谢您的任何帮助您当前的正则表达式有效,但将完整的数字分为第1组和第3

尝试匹配以下内容:

wrs/time/5/10
wrs/time/5.2/10.55
或介于整数和浮点之间的任何内容,对于两个捕获组,最多可选择两位小数

已尝试以下对一个数字有效但对两个组无效的方法:
\d{0,2}(\.\d{1,2})?

完整路由尝试:

$route['wrs/time/(\d{0,2}(\.\d{1,2})?)/(\d{0,2}(\.\d{1,2})?)'] = 'wrs/trange/$1/$2';

非常感谢您的任何帮助

您当前的正则表达式有效,但将完整的数字分为第1组和第3组(第2组和第4组中的小数也独立存在)

您可以通过将重写更改为
'wrs/trange/$1/$3'
来解决此问题

或者,您可以将正则表达式稍微更改为:

wrs/time/(\d{0,2}(?:\.\d{1,2})?)/(\d{0,2}(?:\.\d{1,2})?)
通过将小数部分周围的
(…)
更改为
(?:…)
,您可以说不要在其自己的组中捕获小数,这样您的数字将像您预期的那样位于组1和组2中

在您的示例中,当您需要将某些内容分组到括号中,以便使用
使整个内容成为可选内容时,这通常非常有用,但实际上您并不希望该部分成为捕获组


您能用您得到的信息编辑问题吗?你期望什么呢?当我在我的一个项目中测试你的代码时,它运行得很好。
{0,2}+
不是指“在0到2次之间,一次或多次”而是“在0到2次之间,所有格”。是的,当我键入它时,我意识到我不知道
{0,2}+
实际上会这样做-我非常确定它是无效的正则表达式。我不知道有些东西可能是“占有性的”(编写正则表达式的人也不知道),只是现在查了一下,谢谢你提供的信息。