У меня есть регулярное выражение для проверки правил пароля.
В приложении .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»), не проходит проверку на стороне клиента.