Запретить специальные символы в TextBox - PullRequest
3 голосов
/ 31 августа 2010

Я хочу запретить пользователям вводить URL-адреса (например, href = "") в TextBox.

Я хочу использовать валидатор регулярных выражений, но не знаю, что написать?

Как я могу это сделать?

Ответы [ 6 ]

3 голосов
/ 31 августа 2010

Вы имеете в виду, что вы буквально хотите запретить им вводить текст href=" в TextBox или вы хотите запретить URL? В любом случае, RegexValidator является одним из решений:

На самом деле, насколько я знаю, не очень простой способ использовать валидатор OOTB-регулярных выражений для создания отрицательного содержимого (т. Е. "Потерпеть неудачу, если есть совпадение"). Кто-то умнее может исправить меня. Но вы определенно можете использовать собственный валидатор:

<asp:TextBox runat="server" id="myTextBox" />
<asp:CustomValidator runat="server" OnServerValidate="ValidateNoUrls" ControlToValidate="myTextBox" ErrorMessage="URLs not allowed" />

Codebehind:

protected void ValidateNoUrls(object sender, ServerValidateEventArgs e)
{
    e.IsValid = !Regex.IsMatch(e.Value, @"(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?");
}
3 голосов
/ 31 августа 2010

javascript + regex сделает это, но нет стандартного метода кода, на который я могу вам указать.

Однако важно помнить, что независимо от того, что вы делаете, вы не можете запретить пользователям отправлять запрос на ваш сервер с плохими данными. Это означает, чтовсе, что вы делаете в клиентском веб-браузере с помощью javascript, является всего лишь бинтом и поможет вашим пользователям узнать, где находятся строки.Это не настоящий код безопасности.Настоящий код безопасности должен находиться на вашем сервере.Вот где вам нужно знать, как обрабатывать такие вещи, как веб-адреса, введенные в текстовое поле.

1 голос
/ 31 августа 2010

Поскольку вы упоминаете ASP.NET, вы можете попробовать Regex Validator, который проверяет ввод, чтобы убедиться, что шаблоны URL отсутствуют. Взгляните на эту статью MSDN .

Это регулярное выражение должно сделать трюк: @"^(?!.*(mailto\:|(news|(ht|f)tp(s?))\://).*).*$"

0 голосов
/ 31 августа 2010

Также убедитесь, что вы не проверяете только на стороне клиента через JS или аналогичные. Если мы говорим о веб-приложении, то вы должны выполнить проверку на стороне сервера. Это потому, что вы никогда не узнаете , как был сформирован запрос и откуда он поступил. Легко сформировать любой запрос GET / POST, даже не глядя на ваш.

0 голосов
/ 31 августа 2010

Вам, возможно, потребуется рассмотреть возможность проверки (или удаления) на сервере в любом случае, поскольку злонамеренный пользователь может выполнить прямой HTTP POST и обойти ваш javascript

0 голосов
/ 31 августа 2010

Вы можете использовать событие JS нажатия клавиши и проверить, соответствует ли введенный шаблон тому, что вы хотите отфильтровать. Вы также можете использовать событие onblur, чтобы сделать то же самое

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