Regex 使用kohana路由的正则表达式负浮点
我想知道为什么这个正则表达式不能在kohana上检索浮点负数 正则表达式:Regex 使用kohana路由的正则表达式负浮点,regex,kohana,routes,Regex,Kohana,Routes,我想知道为什么这个正则表达式不能在kohana上检索浮点负数 正则表达式: ^(-|)\d+((.|,)\d+|)$ 科哈纳路线: Route::set('route','data/<data>',array("data"=>"^(-|)\d+((.|,)\d+|)$")); Route::set('Route','data/',数组('data“=>”^(-)\d+((.|,)\d+)$); 我试过这个正则表达式,它很管用,你知道为什么它在科哈纳路线上不管用吗 谢谢您的
^(-|)\d+((.|,)\d+|)$
科哈纳路线:
Route::set('route','data/<data>',array("data"=>"^(-|)\d+((.|,)\d+|)$"));
Route::set('Route','data/',数组('data“=>”^(-)\d+((.|,)\d+)$);
我试过这个正则表达式,它很管用,你知道为什么它在科哈纳路线上不管用吗
谢谢您的正则表达式不必要地复杂,并且有一个错误。
(.|,)
中的
不匹配句点,但匹配任何字符(正则表达式中点的含义,字符类之外)。我们要么需要转义点,如\.
,要么将其包含在字符类中,如[,]
请尝试使用此压缩正则表达式:
^-\d+[,]\d+$
或^-\d+([,]\d+)?$
如果要使小数部分为可选部分
您原来的正则表达式建议您允许使用逗号。如果没有,请使用以下选项:
如果要使小数部分可选,请使用^-\d+\.\d+$
或^-\d+(\.\d+)?$
解释正则表达式
^ # the beginning of the string
- # '-'
\d+ # digits (0-9) (1 or more times (matching
# the most amount possible))
[.,] # any character of: '.', ','
\d+ # digits (0-9) (1 or more times (matching
# the most amount possible))
$ # before an optional \n, and the end of the
# string
,
可能是URL编码的,不需要转义
?另外,?
比(..)
更具可读性。如果您在数据/
之后忘记了关闭”
。此外,您可能需要删除前导的^
和尾随的$
;我没有使用Kohana的经验,但我没有看到在中的任何示例中使用这些锚。我添加了撇号“谢谢…”。。我想科哈纳不喜欢“|”谢谢你的回答,我用“(?)\d+(\)\d+”解决了它。谢谢你提供的所有细节。它非常有用,我会把你的问题标记为好的=)@zeomega谢谢,下次见。:)