Что такое правильное регулярное выражение для имен объектов Active-Directory? - PullRequest
2 голосов
/ 28 января 2010

Мое приложение создает сайт SharePoint и группу Active Directory из пользовательского ввода. Специальные символы, упомянутые в http://www.webmonkey.com/reference/Special_Characters, становятся большой проблемой в моем приложении. Приложение создает имена групп по-разному, и приложение не может получить к ним доступ из свойства name. Я хочу, чтобы пользовательский ввод проверялся регулярным выражением для этих символов. Я погуглил и нашел хороший тестер и тестеры регулярных выражений, но они не решат мою проблему. Так может кто-нибудь предложить регулярное выражение для запрета специальных символов, что является проблемой для имен объектов Active Directory?

P.S. Пользователи приложения могут вводить турецкие данные, поэтому регулярное выражение должно также разрешать использование турецких символов, таких как «ç», «ş», «ö»

1 Ответ

2 голосов
/ 28 января 2010

Вы должны начать с чего-то вроде этого:

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

Это будет соответствовать:

  • \p{L}: любое письмо на любом языке
  • \p{N}: любой тип числового символа в любом скрипте
  • \p{P}: любой знак пунктуации.

Когда вы запрашиваете AD, вы должны экранировать некоторые специальные символы, описанные здесь: Создание фильтра запросов

Если в фильтре запросов должны присутствовать какие-либо из следующих специальных символов в виде литералов, они должны быть заменены указанной escape-последовательностью.

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

Кроме того, произвольные двоичные данные могут быть представлены с использованием синтаксиса escape-последовательности путем кодирования каждого байта двоичных данных с обратной косой чертой, за которой следует две шестнадцатеричные цифры. Например, четырехбайтовое значение 0x00000004 кодируется как "\ 00 \ 00 \ 00 \ 04" в строке фильтра.

...