Регулярное выражение - это шаблон, описывающий на специально разработанном языке закон «сходства» искомой строки с образцом. Наиболее типичными задачами в программировании, где применяются регулярные выражения, являются поиск строки в тексте, проверка корректности ввода и синтаксический анализ (парсинг - преобразование исходного текста в структуру данных, отражающее синтаксическую структуру входной последовательности и пригодную для дальнейшей обработки).
В качестве примера рассмотрим программирование проверки введенных пользователем данных при регистрации.
Допустим, что существует форма, в которой пользователь вводит данные, необходимо проверить на корректность введенный им электронный почтовый адрес и пароль.
Рассмотрим следующий код:
<html>
<head>
<title>Регистрация пользователя</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h2>Воод регистрационных данных</h2>
<form name="mainForm">
<label>E-mail:</label><br>
<input type="text" name="mail"><br>
<label>Password:</label><br>
<input type="password" name="pass"><br>
<input type="button" value="Отправить" onclick="check_data(mainForm);">
</form>
</body>
</html>
Данный код представляет собой форму, в которой пользователь будет вводить регистрационные данные, при нажатии на кнопку ОТПРАВИТЬ вызывается функция на JavaScript check_data, осуществляющая проверку введенных данных:
function check_data(obj)
{
var adress = obj.mail.value;
var password = obj.pas.value;
var adress_pattern=/[0-9a-z_]+@[0-9a-z_]+.[a-z]{2,5}/i;
var password_pattern=/[0-9a-z]+/i;
var check_adress = adress_pattern.test(adr);
var check_password = password_pattern.test(par);
if (check_adress ==true && check_password ==true)
{
alert("Вы зарегистрированы!");
}
else
{
if (check_adress==false)
{
alert("Введен неверный email!");
}
if (!check_password==false)
{
alert("Введен неверный пароль!");
}
}
}
В переменные address и password передаются соответственно email и пароль, введенные в форме пользователем.
Для задания регулярного выражения используем сокращенную форму записи (литеральный формат):
var expr = /pattern/flags;
где:
pattern - Шаблон поиска (текст регулярного выражения);
Flags - Способы поиска по шаблону:
g - глобальный поиск (обрабатываются все совпадения с шаблоном поиска);
i - не различать строчные и заглавные буквы;
m - многострочный поиск.
В результате в переменных adress_pattern и password_pattern хранятся объекты типа RegExp. Далее осуществляется проверку на сопоставление образцу. Для этого используется метод test объекта RegExp.
Регулярное выражение для проверки пароля имеет вид:
/[0-9a-z]+/i
Это означает, что пароль может содержать любое количество цифр и букв один и более раз (т.е. он может состоять из одной цифры, из одной буквы, из многих цифр, из многих букв, из цифр и букв). Например, если пользователь введет в поле пароля "56", "b45t", то такой пароль будет считаться корректным. А если, он введет "vg&h" или "67?", то такой пароль корректным считаться не будет, т.к. он содержит спецсимволы, которые в данном регулярном выражении не разрешены.
Для проверки адреса используется выражение:
/[0-9a-z_]+@[0-9a-z_]+.[a-z]{2,5}/i.
Это означает, что в адресе электронной почты идут цифры, буквы и знаки подчеркивания 1 и более раз, затем следует символ @, затем снова идут цифры, буквы и знаки подчеркивания 1 и более раз, затем идет символ точки, после которой идут буквы от 2 до 5 раз. Примерно такой вид имеют адреса электронной почты.
Регулярные выражения позволяют легко извлекать любую информацию, которую можно описать регулярным выражением, из огромного количества текста. Например, выборка электронных адресов на html странице, цены и наименования товаров из прайс листов. Также регулярные выражения позволяют проводить проверку введенной информации, например номера телефонов или адреса проживания.