Выборочная проверка регулярных выражений на всех входах - PullRequest
0 голосов
/ 25 апреля 2018

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

[Required(ErrorMessage = "You must provide a First Name.")]
[RegularExpression(@"<[a-z][\s\S]*>", ErrorMessage = "Invalid character")]
[DisplayName("First Name")]
public string FirstName { get; set; }

Проблема в том, что независимо от того, какой символ, будь то <test> илиbe abc приведет к появлению сообщения Invalid Character.Обязательный атрибут работает нормально, и если я попробую простое регулярное выражение, например:

[RegularExpression("[a-z]", ErrorMessage = "Invalid character")] 

Это работает на 100%, как и ожидалось, что заставляет меня полагать, что мое регулярное выражение неверно, но я знаю, что оно работает для проверки HTML какЯ могу доказать это с помощью онлайн-инструментов.Что я делаю не так?

1 Ответ

0 голосов
/ 27 апреля 2018

Если вы посмотрите на документацию RegularExpressionAttribute, то в ней говорится:

Указывает, что значение поля данных в динамических данных ASP.NET должно соответствовать указанному регулярному выражению.

Итак, ваш атрибут делает полную противоположность тому, что вы хотите сделать:

[RegularExpression(@"^(?!.*<.*>).*$", ErrorMessage = "Invalid character")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...