В предыдущем уроке мы начали изучать метод search и регулярные выражения. Сейчас мы продолжим с этим работать и рассмотрим выражения Начала и Конца строки.
Но прежде следует сказать следующее... Регулярные выражения существуют не только в javascript.
Если говорить строго, то Регулярные выражения - это специальный язык для описания шаблонов строк. Это инструмент для поиска строк, проверки их на соответствие какому-либо шаблону и другой подобной работы. Реализация этого инструмента различается в разных языках программирования, хоть и не сильно.
На этом сайте www.exlab.net можно скачать шпаргалку по регулярным выражениям. Или же скачать архив по ссылке ниже...
Метод search - Регулярное выражение - {n} - ровно n
Вернемся к примеру из предыдущего урока, где при помощи регулярного выражения \d, которое обозначает любую цифру от 0 до 9, мы искали последовательность из шести цифр. Для этого пришлось регулярное выражение \d указать шесть раз.
Теперь, используя шпаргалку по регулярным выражениям, можно оптимизировать javascript-код в примере из предыдущего урока.
<script type="text/javascript">
var index=prompt("Введите свой почтовый индекс из шести цифр");
var regular = /\d{6}/; /* Регулярные выражения: \d и {6} - последовательность из шести цифр */
var result = index.search(regular); /* Ищем шаблон в строке */
/* Далее составляем условие для проверки... */
if (result==-1)
{ document.write("Вы неверно ввели индекс - он должен состоять из шести цифр");
}
else
{ document.write("Ваш индекс " +index);
}
Итак, в этом примере мы оптимизировали javascript-код за счет использования регулярного выражения \d{6}:
Где, как Вы помните, \d обозначает цифру от 0 до 9.
А {6} обозначает ровно 6(в фигурных скобках может быть указано любое число).
То есть запись \d{6} идентична \d\d\d\d\d\d.
Метод search - Регулярное выражение - ^ - Начало строки
Давайте подробнее рассмотрим предыдущий пример.
Допустим, пользователь корректно укажет почтовый индекс, то есть подряд введет шесть цифр, но при этом сначала напишет пару слов: «Мой индекс 394000».
Попробуйте это сделать и в результате увидите всю строку: «Мой индекс 394000».
А что если нам нужен только почтовый индекс?
Снова обратимся к шпаргалке для регулярных выражений.
Здесь нам поможет регулярное выражение ^, что означает Начало строки.
<script type="text/javascript">
var index=prompt("Введите свой почтовый индекс из шести цифр");
var regular = /^\d{6}/; /* Регулярные выражения: ^ - начало строки, \d и {6} - последовательность из шести цифр */
var result = index.search(regular); /* Ищем шаблон в строке */
/* Далее составляем условие для проверки... */
if (result==-1)
{ document.write("Вы неверно ввели индекс - он должен состоять из шести цифр");
}
else
{ document.write("Ваш индекс " +index);
}
Теперь какой-либо текст, расположенный перед почтовым индексом приведет к тому, что в результате мы получим -1, то есть увидим: «Вы неверно ввели индекс - он должен состоять из шести цифр».
Метод search - Регулярное выражение - $ - Конец строки
Еще один момент... Доработаем до конца этот пример!!!
Допустим, пользователь снова корректно укажет почтовый индекс, только теперь напишет пару слов после него: «394000 - Мой индекс».
При этом регулярное выражение ^ - Начало строки уже не поможет. Но есть другое $ - символ доллара, что означает Конец строки
<script type="text/javascript">
var index=prompt("Введите свой почтовый индекс из шести цифр");
var regular = /^\d{6}$/; /* Регулярные выражения: ^ - начало строки, \d и {6} - последовательность из шести цифр, $ - Конец строки */
var result = index.search(regular); /* Ищем шаблон в строке */
/* Далее составляем условие для проверки... */
if (result==-1)
{ document.write("Вы неверно ввели индекс - он должен состоять из шести цифр");
}
else
{ document.write("Ваш индекс " +index);
}
Теперь какой-либо текст, расположенный как до, так и после почтового индекса приведет к тому, что в результате мы получим -1, то есть увидим: «Вы неверно ввели индекс - он должен состоять из шести цифр».
Кроме этого! Благодаря тому, что к регулярному выражению \d{6}, то есть к последовательности из 6-ти цифр одновременно добавлены выражения ^ и $ - Начала и Конца строки, теперь также нельзя будет ввести последовательно 7, 8 или более цифр.
Домашнее задание - Регулярные выражения в JavaScript
Теперь выполним Домашнее задание по 2-м пройденным урокам. Это «Введение в Регулярные выражения в JavaScript» и текущему уроку, в котором были рассмотрены выражения ^ и $ - Начала и Конца строки.
Домашнее задание звучит так:
Написать функцию, которая получает в качестве параметра переменную
содержащую строку и с помощью регулярного выражения проверяет,
начинается ли содержимое этой переменной с цифры или нет.
Результат своей работы функция выводит на экран.
Переменная для передачи в функцию: var forTesting= "8 пингвинов и 9 карасей";
Часто в javascript бывает так, что небольшая разница в написании КОДа дает один и тот же результат. Что касается решения текущего Домашнего задания, то эта разница проявляется при работе с функциями...
Обратите внимание. В решении Выше мы создали функцию firstPosition()без параметра и в теле функции (в инструкции для нее) работали напрямую с переменной forTesting, которую затем указали в качестве параметра функции при ее вызове...
Далее - в решении ниже... Мы создали функцию с параметром Ex - functionfirstPosition(Ex) и в теле функции работали уже с ним, а затем при вызове функции в качестве параметра указали переменную forTesting, которую javascript подставил в теле функции вместо Ex...
<script type="text/javascript">
var forTesting= "8 пингвинов и 9 карасей";
functionfirstPosition(Ex) /* Создаем функцию - параметр Ex */
{
var regular=/\d/; /* Регулярное выражение - Цифра */
var result = Ex.search(regular); /* Ищем цифру в строке */
if (result==0) /* Если цифра в начале строки, то... */
{ document.write("Строка начинается с Цифры");
}
else /* Иначе... */
{ document.write("В начале строки НЕТ цифры");
}
Здесь мы изменили условие: if (result==-1). При этом если сначала ввести цифру, то мы увидим "В начале строки цифра" - т.е. все верно! Но если сначала ввести текст, а потом цифру - мы увидим то же самое "В начале строки цифра".
Дело в том, что запись if (result==-1) говорит о том, что регулярное выражение\d, то есть какая-либо цифра - должна быть в принципе в строке и не важно - в начале ее или нет. Поэтому здесь нужно добавить регулярное выражение^ - Начало строки. См. пример ниже...
<script type="text/javascript">
var forTesting=prompt("Введите сначала Цифру потом текст и наоборот");
functionfirstPosition() /* Создаем функцию */
{
var regular=/^\d/; /* Регулярное выражение - Начало строки + Цифра */
var result =forTesting.search(regular); /* Ищем цифру в строке */
if (result==-1) /* Если в начале строки НЕТ Цифры, то... */
{ document.write("Строка начинается НЕ с Цифры");
}
else /* Иначе... */
{ document.write("В начале строки цифра");
}
Теперь, если попробовать ввести сначала текст, а потом цифру, то мы увидим "Строка начинается НЕ с Цифры", так как регулярное выражение^\d говорит нам о том, что цифра должна располагаться именно в начале строки.