Active-Directory对象名称的正确正则表达式是什么?

时间:2010-01-28 12:08:17

标签: regex active-directory special-characters

我的应用程序根据用户输入创建SharePoint站点和Active Directory组。 http://www.webmonkey.com/reference/Special_Characters中提到的特殊字符在我的应用程序中成为一个大问题。应用程序以不同方式创建组名,应用程序无法从name属性访问它们。我希望从这些字符的正则表达式验证用户输入。我用Google搜索并找到了一些优秀的正则表达式采样器和测试人员,但他们无法解决我的问题。因此,任何人都可以建议使用正则表达式来禁用特殊字符,这是Active Directory对象名称的问题吗?

P.S。应用程序用户可以输入土耳其语输入,因此正则表达式还应该允许土耳其语字符,例如'ç','ş','ö'

1 个答案:

答案 0 :(得分:2)

你应该从这样的事情开始:

^(\p{L}|\p{N}|\p{P})+$

这将匹配:

  • \p{L}:来自任何语言的任何信件
  • \p{N}:任何脚本中的任何数字字符
  • \p{P}:任何标点字符。

当您查询AD时,您必须转义一些特殊字符,如下所述:Creating a Query Filter

  

如果查询过滤器中必须出现以下任何特殊字符作为文字,则必须用列出的转义序列替换它们。

  ASCII     Escape sequence 
character     substitute
    *           "\2a"
    (           "\28"
    )           "\29"
    \           "\5c"
   NUL          "\00"
  

此外,可以使用转义序列语法来表示任意二进制数据,方法是使用反斜杠后跟两个十六进制数字对二进制数据的每个字节进行编码。例如,四字节值0x00000004在过滤字符串中编码为“\ 00 \ 00 \ 00 \ 04”。