【发布时间】:2015-11-03 20:35:28
【问题描述】:
我正在寻找一种方法来验证从 Active Directory 中插入的对象 SID 是否有效,这是否可以使用 preg_match() 或 preg_match_all()?
我在网上查找了用于此验证的正则表达式,但找不到任何东西。
例子:
$sid = 'S-1-5-21-1220945662-1202665555-839525555-5555';
if ($validator->validateSid($sid)) {
// SID is valid!
}
我不擅长编写正则表达式,所以如果有人绝对有任何意见,请告诉我,谢谢!
编辑:对于任何使用以下正则表达式寻找代码的人:
preg_match("/^S-1-[0-5]-\d{2}-\d{10}-\d{10}-\d{9}-[1-9]\d{3}/", $search, $matches);
// Returns
array(
0 => S-1-5-21-1220945662-1202665555-839525555-5555
)
或者对于更宽松的模式:
preg_match("/S-1-5-21-\d+-\d+\-\d+\-\d+/", $sid, $matches);
// Returns
array(
0 => S-1-5-21-1220945662-1202665555-839525555-5555
)
【问题讨论】:
-
规则是什么?总是
S-something?-之间的数字是否被限制为一定的数字? -
我知道这已经很多年了,但是您的“宽松”模式对我有用,而接受的答案却没有,因为我正在使用的几个 SID 以 4、5 和甚至有些是 6 位数字。
标签: php regex active-directory