regExp问题-字符串匹配,但不应该匹配


regExp problem - string is matched but it should not match

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

表达式(ou=|||(是我要查找的字符串

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

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

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

我使用的是带有preg_match的PHP 5.x。

管道是正则表达式中的元字符(意思是"或"(。你需要逃离他们:
/^OU='|{3}$|,OU='|{3}$/i

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

OU=|||

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

为了更好的可读性,您需要转义管道并包含一些括号:

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