Допустимый RegEx не работает с атрибутом ASP.Net MVC RegularExpression - PullRequest
0 голосов
/ 06 ноября 2018

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

В приложении .Net Console оно корректно отклоняет или проверяет пароли, как и ожидалось.

var strongRegex = new Regex("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])");
Console.WriteLine(strongRegex.IsMatch("Test_1234"));

Возвращает "true", как и ожидалось.

Когда я добавляю это к моей модели в проекте ASP.Net MVC, это же значение отклоняется ненавязчивой проверкой jQuery на клиенте.

[RegularExpression("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])"]

Я просмотрел исходный код страницы, чтобы увидеть, как он обрабатывается из-за чтения о проблемах чувствительности к регистру в предыдущих версиях фреймворка, но здесь это не так ... он отображает следующее на input элемент:

data-val-regex-pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9])"

И это приводит к тому, что то же значение, которое работает в консольном приложении («Test_1234»), не проходит проверку на стороне клиента.

1 Ответ

0 голосов
/ 06 ноября 2018

Похоже, что ваши правила проверки пароля:

  1. Должен содержать не менее 1 цифры
  2. Должен содержать как минимум 1 символ верхнего регистра
  3. Должен содержать как минимум 1 символ нижнего регистра
  4. Должен иметь хотя бы еще одного персонажа, который не соответствует ни одному из первых трех правил.

Если я правильно понял, попробуйте следующее:

^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])).*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...