帮助正则表达式匹配任何网址,但管理文件夹的网址

Mat*_*dak 5 php regex preg-match

我被困在一些我知道必须简单的东西,但现在已经绕圈了一会儿.

我想使用php和preg_match创建一个正则表达式,用于cms路由功能,匹配任何不以字符串'admin /'开头的URL,因为somedomain.com/admin/将是cms的管理部分.

到目前为止我已经尝试过

preg_match('#^([^admin])+(.+)$#', 'mens-books'))
Run Code Online (Sandbox Code Playgroud)

由于我正在寻找的url字符串'mens-books'与字符串'admin'中的字母m匹配,因此失败.

我也试过这样做:

preg_match('#^([^admin$])+(.+)$#', 'mens-books'))
Run Code Online (Sandbox Code Playgroud)

因为美元符号表示字符串的结尾,但这也不起作用.

然后我这样做了:

preg_match('#^[?!=admin]+(.+)$#', 'mens-books'))
Run Code Online (Sandbox Code Playgroud)

返回true但只有我认为因为正则表达式中的?!=现在将匹配以a,d,m,i或n开头的任何内容.

请有人能帮忙吗?我对任何建议持开放态度.

谢谢.

马特

Gol*_*rol 6

if (substr($url, 0, 6) !== 'admin/')
{
  echo 'Yippie';
}
Run Code Online (Sandbox Code Playgroud)

但要回答正则表达式的问题.使用方括号时,您指定了一个字符类.这意味着[admin]匹配单个字符或者是一个a,一个d一个min.如果跳过括号,则匹配文字字符串.但是,正如我的代码证明,如果你需要检查字符串是否以固定的子字符串开头,则根本不需要使用正则表达式.