2010-01-28 4 views
2

Mon application crée un site SharePoint et un groupe Active Directory à partir de l'entrée utilisateur. Les caractères spéciaux qui sont mentionnés dans http://www.webmonkey.com/reference/Special_Characters deviennent un gros problème dans mon application. L'application crée des noms de groupe différemment et l'application ne peut pas y accéder à partir de la propriété name. Je souhaite que l'entrée utilisateur soit validée à partir d'une expression régulière pour ces caractères. J'ai fait une recherche Google et j'ai trouvé de bons sampleurs et testeurs regex, mais ils ne résoudront pas mon problème. Donc, quelqu'un peut-il suggérer une regex pour interdire les caractères spéciaux, ce qui est un problème pour les noms d'objets Active Directory?Quelle est la regex correcte pour les noms d'objets Active Directory?

P.S. utilisateurs de l'application peuvent entrer dans les entrées turques, donc regex devraient aussi permettre des caractères turcs comme « ç », « l », « ö »

Répondre

2

Vous devriez commencer par quelque chose comme ceci:

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

Cela correspondra:

  • \p{L}: tout type de lettre de toute langue
  • \p{N}: tout type de caractère numérique dans un script
  • \p{P}: tout type de caractère de ponctuation.

Lorsque vous interrogez votre AD, vous devez échapper à certains caractères spéciaux, décrits ici: Creating a Query Filter

Si l'un des caractères spéciaux suivants doivent apparaître dans le filtre de requête comme littéraux, ils doivent être remplacés par la séquence d'échappement répertoriée.

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

En outre, des données binaires arbitraires peuvent être représentés en utilisant la syntaxe de la séquence d'échappement par le codage de chaque octet de données binaires avec la barre oblique inverse suivie de deux chiffres hexadécimaux. Par exemple, la valeur de quatre octets 0x00000004 est codée comme "\ 00 \ 00 \ 00 \ 04" dans une chaîne de filtre.

+0

Merci! Problème résolu:) –