C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Использование регулярных выражений для проверки ввода / Регулярные выражения / Безопасность в ASP.NET 2.0

Использование регулярных выражений для контроля входных данных в ASP.NET

 

Введение

Регулярные выражения – хороший способ проверки текстовых полей типа имени, адреса, номера телефона и другой информации пользователя. Можно проверять длину, формат и другие свойства проверяемого текстового объекта. Для проверки серверных контролов можно использовать контрол RegularExpressionValidator. Также можно проверять  строки запроса (query strings), cookies, и ввод HTML текста из контролов, используя класс System.Text.RegularExpressions.Regex.

Это How To показывает, как использовать регулярные выражения в приложениях ASP.NET для проверки вводимой информации.

Содержание

·                     Регулярные выражения для проверки ввода, формата и длины текста.

·                     Контрол ASP.NET RegularExpressionValidator для проверки ввода.

·                     Класс Regex для проверки ввода.

·                     Учебная информация по использованию регулярных выражений для проверки ввода.

 

Регулярные выражения доступны в приложениях ASP.NET посредством контрола RegularExpressionValidator и класса Regex в пространстве имен System.Text.RegularExpressions.

Использование контрола RegularExpressionValidator

Если Вы проверяете ввод из серверных контролов, вы можете использовать контрол RegularExpressionValidator для проверки ввода. С его помощью Вы можете проверять формат, длину, набор символов, соответствие паттерну.

Для проверки ввода из верверных контролов используйте RegularExpressionValidator

1.        Добавьте контрол RegularExpressionValidator на Вашу страницу.

2.        Установите свойство ControlToValidate, указав проверяемый контрол.

3.        Установите свойство ValidationExpression для использования регулярных выражений.

4.        Установите свойство ErrorMessage для определения выводимого сообщения об ошибке.

Пример использования контрола RegularExpressionValidator для проверки имени пользователя.

<%@ language="C#" %>
<form id="form1" runat="server">
    <asp:TextBox ID="txtName" runat="server"/>
    <asp:Button ID="btnSubmit" runat="server" Text="Submit" />
    <asp:RegularExpressionValidator ID="regexpName" runat="server"     
                                    ErrorMessage="This expression does not validate." 
                                    ControlToValidate="txtName"     
                                    ValidationExpression="^[a-zA-Z'.\s]{1,40}$" />
</form>
  

Регулярное выражение, используемое в примере, позволяет вводить только символы латинского алфавита (в нижнем и верхнем регистре), пробел и апостроф. Суммарная длина введенных символов не должна превышать 40 символов.

Использование ^ и $

 ^ - начало выражения, а $ означает конец вводимой строки. Лучше всего их использовать.

Использование класса Regex

Если Вы не используете серверные контролы (например, cookie), используйте класс Regex из пространства имен System.Text.RegularExpressions.

Использование класса Regex

1.        Добавьте в секцию using пространство имен System.Text.RegularExpressions.

2.        Вызовите метод IsMatch класса Regex, как показано в примере.

3.            // Instance method:
4.            Regex reg = new Regex(@"^[a-zA-Z'.]{1,40}$");
5.            Response.Write(reg.IsMatch(txtName.Text));
6.             
7.            // Static method:
8.            if (!Regex.IsMatch(txtName.Text, 
9.                               @"^[a-zA-Z'.]{1,40}$"))
10.        {
11.          // Name does not match schema
12.        }
  

 

<%@ Page Language="C#" %>
 
<html xmlns="http://www.w3.org/1999/xhtml" >
  <body>
    <form id="form1" method="post" action="HtmlControls.aspx">
        Name:
        <input name="txtName" type="text" />
        <input name="submitBtn" type="Submit" value="Submit"/>
    </form>
  </body>
</html>
 
<script runat="server">
 
  void Page_Load(object sender, EventArgs e)
  {
    if (Request.RequestType == "POST")
    {
      string name = Request.Form["txtName"];
      if (name.Length > 0)
      {
        if (System.Text.RegularExpressions.Regex.IsMatch(name, 
                                           "^[a-zA-Z'.]{1,40}$"))
          Response.Write("Valid name");
        else
          Response.Write("Invalid name");
      }
    }
  }
 
</script>
  

Использование комментариев в регулярных выражениях

Для использования комментариев в регулярных выражениях используйте символ (#), тогда нужно использовать опцию RegexOptions.IgnorePatternWhitespace, для игнорирования «лишних» пробелов.

Regex regex = new Regex(@"
                        ^           # anchor at the start
                       (?=.*\d)     # must contain at least one numeric character
                       (?=.*[a-z])  # must contain one lowercase character
                       (?=.*[A-Z])  # must contain one uppercase character
                       .{8,10}      # From 8 to 10 characters in length
                       \s           # allows a space 
                       $            # anchor at the end", 
                       RegexOptions.IgnorePatternWhitespace);
  

Еще о регулярных выражениях

Смотрите таблицу 1.

Таблица 1. Использование регулярных выражений

Поле

Выражение

Пример форматирования

Примечание

Имя

^[a-zA-Z''-'\s]{1,40}$

John Doe
O'Dell

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

Социальный номер

^\d{3}-\d{2}-\d{4}$

111-11-1111

Разрешается вводить следующую последовательность: три цифры, знак «-», две цифры, щнак «-», четыре цифры.

Телефонный номер

^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$

(425) 555-0123
425-555-0123
425 555 0123
1-425-555-0123

Усложненная проверка телефонного номера

E-mail

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

someone@example.com

Проверка e-mail адреса

URL

^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$

http://www.microsoft.com

Проверка URL

ZIP код

^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d)$

12345

Проверка ZIP-кода (от 5 до 9 цифр).

Пароль

(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$

 

Содержит как минимум 1 цифру и один символ латинского алфавита. Общая длина – от 8 до 10 символов.

Неотрицательное число

^\d+$

0
986

Проверка на целое неотрицательное число.

Денежный тип (неотрицательный)

^\d+(\.\d\d)?$

1.00

Проверка денежной величины, которая не может быть отрицатальной и после разделительного знака («.») обязательно 2 числа. Например, 3.00 валидная денежная сумма, а 3.1 – не валидна.

Currency (positive or negative)

^(-)?\d+(\.\d\d)?$

1.20

Аналогично предыдущему примеру, однако значение может быть отрицательным.

Дополнительные ресурсы

Для получения дополнительной информации по использованию регулярных выражений, обратитесь по адресу http://www.regular-expressions.info/tutorial.html.