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

标签 regex active-directory special-characters

我的应用程序根据用户输入创建一个 SharePoint 站点和一个 Active Directory 组。 http://www.webmonkey.com/reference/Special_Characters 中提到的特殊字符成为我的应用程序中的一个大问题。应用程序以不同的方式创建组名称,并且应用程序无法从名称属性访问它们。我希望通过这些字符的正则表达式来验证用户输入。我在谷歌上搜索并找到了一些很好的正则表达式采样器和测试器,但它们无法解决我的问题。那么有人可以建议一个正则表达式来禁止特殊字符,这对于 Active Directory 对象名称来说是一个问题吗?

附注应用程序用户可以输入土耳其语输入,因此正则表达式还应该允许土耳其语字符,如“ç”、“ş”、“ö”

最佳答案

你应该从这样开始:

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

这将匹配:

  • \p{L}:任何语言的任何类型的字母
  • \p{N}:任何脚本中的任何类型的数字字符
  • \p{P}:任何类型的标点符号。

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

If any of the following special characters must appear in the query filter as literals, they must be replaced by the listed escape sequence.

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

In addition, arbitrary binary data may be represented using the escape sequence syntax by encoding each byte of binary data with the backslash followed by two hexadecimal digits. For example, the four-byte value 0x00000004 is encoded as "\00\00\00\04" in a filter string.

关于regex - Active-Directory 对象名称的正确正则表达式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2154331/

相关文章:

java - 如何按空格拆分字符串但转义引号内的空格(在 java 中)?

c++ - Active Directory:从网络服务帐户下运行的Windows服务调用时,ADsOpenObject失败

即使使用 requestPathInvalidCharacters ="",URL 中的 ASP.NET 特殊字符(冒号)也无法正常工作

swift - 使用正则表达式将连字符插入长度有限的字符串

javascript - 正则表达式匹配逗号分隔的单词、多行以及两个字符串之间的单词

javascript - 由表达式文字生成的正则表达式是否共享单个实例?

c# - 从 DirectorySearcher 获取 6000 条记录中的 2000 条

powershell - 使用 PowerShell,根据显示名称为用户设置 AD 主目录

c# - 在 C# 中将 ANSI (Windows 1252) 转换为 UTF8

php - UTF8数据库查询及特殊字符