PHP 正则表达式匹配不是以 "admin"、 "login"... 等单词开头的内容?

标签 php regex preg-match

<分区>

我搜索了很多,但我发现许多复杂的例子,对我来说太难理解了。无论如何,我正在尝试写下一个应该遵守的正则表达式:

/foo     // should match
/foo/bar // should match

/login     // shouldn't match
/admin     // shouldn't match
/admin/foo // shouldn't match
/files     // shouldn't match

我试过一个简单的,只有一个词:#^(\/)([^admin])#/ 开头,并且后跟不以单词 admin 开头的内容。它与 /foo/bar 一起工作,但与 /a/foo 一起工作失败,因为它以 a 开头,我想。

如何否定整组单词(adminfileslogin)?

最佳答案

试试这个:

$pattern = '#^(\/)((?!admin|login).)*$#';

$pattern = '#^(/)((?!admin|login).)(/(.)+)*#';
$array = array(
'/foo',     // should match
'/foo/bar', // should match

'/login',     // shouldn't match
'/admin',     // shouldn't match
'/admin/foo', // shouldn't match
'/files'     // shouldn't match
);

foreach($array as $test){
 if(preg_match($pattern, $test)) echo "Matched :".$test."<br>";
 else echo "Not Matched:".$test."<br>";
}

输出:

Matched :/foo
Matched :/foo/bar
Not Matched:/login
Not Matched:/admin
Not Matched:/admin/foo
Matched :/files

关于PHP 正则表达式匹配不是以 "admin"、 "login"... 等单词开头的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558259/

相关文章:

javascript - 在 Python 中用正则表达式替换

javascript - 如何用嵌套字符串分割字符串

php - 如果不是则预匹配

php - php web应用程序的指纹认证

php - Lithium 框架的隐藏特性?

c# - 如何使用 c# 对单个字符串中的多个项目进行正则表达式?

php - 如何找到所有东西而不是一个词

php - 如何创建正确的 preg_replace 模式?

PHP - 将一周添加到用户定义的日期

php - MYSQL 列中有 9,000 个字符串 - 使用哪种数据类型?