Aspx RegularExpressionValidator работает по-разному на клиенте и сервере - PullRequest
0 голосов
/ 18 апреля 2011

У меня есть некоторые проблемы с получением регулярного выражения для RegularExpressionValidator для работы на клиенте:

(?=.{8,})(?=.*[A-Z])(?=.*[\d])(?=.*[\W])|(?=.*[a-z])(?=.*[\d])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\d])

Это выражение должно возвращать true, если предоставленная строка

  • состоит как минимум из восьми символов
  • имеет как минимум один символ в трех из четырех групп «строчные буквы» / «прописные буквы» / «цифры» / «специальные символы»

Использование этого выражения в C # (.NET 3.5) напрямую возвращает ожидаемые результаты для разных тестовых строк, но в браузере клиента допустимая строка (например, aaaaBBB1) не работает.

Я прочитал ветку здесь , поэтому объяснение - это использование JavaScript на стороне клиента, которое работает немного иначе, чем реализация .NET.

Теперь я попытался запустить свое регулярное выражениев JavaScript, чтобы проверить аргументы, сделанные в потоке, связанном выше, но в JavaScript мое регулярное выражение также работает так же, как в C #.

Есть ли другой способ заставить работать RegularExpressionValidator?Я не понимаю, почему JavaScript работает (я ожидал этого не после прочтения о различиях в реализации), но RegularExpressionValidator не работает.

Заранее спасибо за любые указатели в правильном направлении.

Г.

1 Ответ

1 голос
/ 18 апреля 2011

Попробуйте следующее:

^(?:(?=.*[A-Z])(?=.*\d)(?=.*\W)|(?=.*[a-z])(?=.*\d)(?=.*\W)|(?=.*[A-Z])(?=.*[a-z])(?=.*\W)|(?=.*[A-Z])(?=.*[a-z])(?=.*\d)).{8,}$

Ваше регулярное выражение позволило бы передать строку длиной менее 8, поскольку утверждение длины было только частью первого чередования.

Тогда (и этоможет быть проблема) ваше регулярное выражение никогда не соответствует ни одному тексту, оно только делает утверждения.Поэтому я взял «регулярное выражение длины» за пределами символьных ограничений и сделал его фактическим соответствием.

Это должно работать как в JavaScript, так и в .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...