Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何捕捉不带';不要以“开始”;ajax/";对CodeIgniter使用正则表达式?_Php_Regex_Codeigniter - Fatal编程技术网

Php 如何捕捉不带';不要以“开始”;ajax/";对CodeIgniter使用正则表达式?

Php 如何捕捉不带';不要以“开始”;ajax/";对CodeIgniter使用正则表达式?,php,regex,codeigniter,Php,Regex,Codeigniter,我正在为我的CodeIgniter应用程序开发一些路由,我需要声明一个“catch all”/除了一个正则表达式。任何不以“ajax/”开头的路由都应该重定向到“主”路由器。像这样: $route['regexmagichere'] = "main"; 所以这绝对超出了我的正则表达式技能,我需要一些帮助。正则表达式应该在所有不以“ajax/”开头的字符串上返回true,如下所示: $string_one = "ajax/someotherstuffhere"; $string_two = "

我正在为我的CodeIgniter应用程序开发一些路由,我需要声明一个“catch all”/除了一个正则表达式。任何不以“ajax/”开头的路由都应该重定向到“主”路由器。像这样:

$route['regexmagichere'] = "main";
所以这绝对超出了我的正则表达式技能,我需要一些帮助。正则表达式应该在所有不以“ajax/”开头的字符串上返回true,如下所示:

$string_one = "ajax/someotherstuffhere";
$string_two = " ajax/test";
$string_three = "somestuffhere";
这里$string\u one将是唯一返回false的。谢谢你的时间

你可以试试

^((?!ajax).*)
我想,
^(?)就行了


我强调“think”!

对于您的请求是litereal。对于所有不以
ajax/
开头的字符串,返回true的regexp:

^(?!ajax/).*

您可能需要转义
/
,因为
\/
(?!)
是一个否定的前瞻表达式。如果路由的执行有顺序,您可以在开始时命名更具体的路由,同时在结尾添加一个catchall路由。从手册中可以看出:显然类似的模式(?!foo)bar找不到前面有“foo”以外的内容的“bar”的出现;它查找任何“bar”的出现,因为当后面三个字符是“bar”时,断言(?!foo)始终为真。需要一个lookbehind断言来实现此效果。@问号-在本例中不正确
^
锚定到字符串的开头,然后
(?!ajax)
确保第一个字符不是
“ajax”
继续使用
(.*)
捕获整个字符串
(?!foo)bar
(?!foo)。*
-此解决方案可以正常工作,尽管可能不需要捕获组-使用
^(?!ajax).*
很好。在字符串开头使用look behind似乎很愚蠢…这将匹配任何以
/
开头的字符串。look behind在/,并且匹配/someotherstuff此处满足问题的标准否?您是否在CodeIgniter上专门测试过此表达式?它是否在所有路径的开头都包含斜杠?Will斜杠需要转义吗?codeignitor使用preg#u match使用#分隔符,所以不,斜杠不需要转义,我的坏,但不会有什么影响。没有前导斜杠,所以这个表达式永远不会落入gnarf的注释中。只是想知道,如果这只是一个布尔匹配,
*
是否有必要?可能没有……问题bly也不是必需的,但我没有进行测试,也不知道如果在路由匹配中不使用整个字符串,codeignator是否会做一些奇怪的事情。。。