regExp问题 - 字符串匹配但不匹配

时间:2011-09-08 06:57:40

标签: php regex

我试图检查用户是否有权管理组:

表达式(ou=|||)是我正在寻找的字符串

/^OU=|||$|,OU=|||$/i

在像"ou=whatever"这样的字符串上,它返回true( - :

我确定这是管道的问题,但我不知道如何解决这个问题。

我正在使用PHP 5.x和preg_match

3 个答案:

答案 0 :(得分:3)

管道是正则表达式中的元字符(意思是“或”)。你需要逃脱它们:

/^OU=\|{3}$|,OU=\|{3}$/i

您确定正确使用了字符串的起始和结束锚吗?现在,这个正则表达式只匹配字符串

OU=|||

<any number of characters>,OU=|||

答案 1 :(得分:1)

您需要逃避管道并包含一些括号以提高可读性:

/(^OU=\|\|\|$)|(,OU=\|\|\|$)/i

答案 2 :(得分:0)

$has_permission = in_array('OU=|||', explode(',', $permission_string));