有没有办法可以使用字段的正则表达式在LDAP上搜索?我正在使用ldapsearch或“Sun Java System Directory Server控制中心”进行搜索。
答案 0 :(得分:7)
答案是否定的,你不能。为什么?
因为LDAP标准将LDAP-SEARCH描述为具有4个参数的函数类型:
您对过滤器感兴趣。
超越语法
您必须了解的是,属性和值以及通配符内部值之间的运算符与匹配规则交互,这些规则是您的目录的SCHEMA的一部分。在前Sun目录(现在是oracle)中,每个属性都可以使用三个匹配规则(相等,排序,子串)进行设置。
答案 1 :(得分:4)
LDAP支持'substring'搜索,这与通配符不完全相同。子字符串过滤器的示例包括'(uid=abc*)'
和'(mail='john@*.com')'
等等。
通常明智的做法是联系目录服务管理员,并询问您打算在过滤器中使用的任何属性,以便为子字符串搜索编制索引。专业LDAP服务器支持子字符串搜索,并且为了对搜索进行索引,可能需要指定最少数量的字符。例如,如果服务器是Sun Directory Server(Sun ONE,DSEE或SJS DS),则在索引生效之前,过滤器中的'*'
字符前需要两个字符,如'(mail=ab*)'
可能使用索引,而'(mail=a*)'
可能不使用索引。
答案 2 :(得分:0)
LDAP协议以类似于SQL的方式支持基本通配符匹配,但不支持正则表达式。