Далее на странице...
Метод match так же, как и метод search работает с регулярными выражениями. Он также ищет совпадение в строке, но возвращает не позицию, с которой начинается совпадение, а само совпадение.
Метод match - Возвращаем совпадение
Чтобы наглядно увидеть, как работает метод match, рассмотрим пример из предыдущей заметки, где при помощи регулярного выражения \d{6} и метода search искали в строке индекс из шести цифр.
Только теперь будем работать с методом match.
<script type="text/javascript">
var index = "Индекс г. Воронеж 394000";
var regular = /\d{6}/; /* Регулярные выражения: \d и {6} - последовательность из шести цифр */
var result = index.match(regular); /* Ищем последовательность из шести цифр в строке */
document.write(result);
</script>
Итак, в этом примере при помощи метода match мы нашли в строке совпадение (почтовый индекс) и вывели его на экран.
Метод match - Экранирование скобок в регулярных выражениях
Теперь рассмотрим более сложный пример того, как работает метод match в Javascript.
Сделаем так, чтобы метод match выводил все совпадения, найденные в строке.
И узнаем о том, что в регулярных выражениях обязательно экранировать скобки.
Допустим, у нас есть переменная, содержащая список сотрудников какой-либо фирмы, с указанием их имен, телефонов и городов, где они работают. var people = ("Иванов И.И. тел. 8(495)210-21-21 г. Москва; Петров П.П. тел. 8(495)320-20-20 г. Москва; Сидоров С.С. тел. 8(473)222-22-33"); Нужно выбрать тех, кто работает в Москве, и вывести на экран номера их телефонов.
<script type="text/javascript">
var people = "Иванов И.И. тел. 8(495)210-21-21 г. Москва; Петров П.П. тел. 8(495)320-20-20 г. Москва; Сидоров С.С. тел. 8(473)222-22-33";
var regular = /8\(495\)\d{3}-\d{2}-\d{2}/; /* Создаем регулярное выражение */
var result = people.match(regular); /* Ищем совпадения в строке */
document.write(result);
</script>
Разберем этот пример.
Согласно исходной переменной 2 человека работают в Москве и имеют следующие номера телефонов: 8(495)210-21-21 и 8(495)320-20-20
У этих номеров общие цифры 8(495) и далее разная последовательность из 7-ми произвольных цифр.
Согласно этому составляем регулярное выражение
8\(495\)\d{3}-\d{2}-\d{2}, где...8\(495\) - говорит о том, что мы ищем 8(495). Обратный слэш необходим для экранирования круглых скобок, так как в регулярных выражениях они являются специальными символами и просто так их использовать нельзя.
\d{3} - это регулярное выражение должно быть Вам уже знакомо из предыдущей заметки и оно обозначает последовательность из 3-х цифр.
\d{2} - последовательность из 2-х цифр.
Но в результате мы увидим только один - 1-ый номер телефона 8(495)210-21-21, то есть метод match вернул только одно совпадение. А в строке их два - два номера телефона, которые соответствуют шаблону.
Метод match - Возвращаем совпадения - g - Глобальный поиск
Продолжим работать с предыдущим примером.
Теперь нужно сделать так, чтобы метод match смог вернуть все совпадения в строке.
Для этого после описания регулярного выражения нужно указать модификатор шаблонов g, который указывает на глобальный поиск. То есть в нашем случае «он говорит» о том, что нужно искать совпадения по все строке и в результат занести все, которые будут найдены.
Как раз это мы и увидим в примере ниже...
<script type="text/javascript">
var people = "Иванов И.И. тел. 8(495)210-21-21 г. Москва; Петров П.П. тел. 8(495)320-20-20 г. Москва; Сидоров С.С. тел. 8(473)222-22-33";
var regular = /8\(495\)\d{3}-\d{2}-\d{2}/g; /* Создаем регулярное выражение и добавляем модификатор шаблонов - g*/
var result = people.match(regular); /* Ищем совпадения в строке */
document.write(result);
</script>
В итоге при помощи метода match и модификатора шаблонов g мы вернули все совпадения, найденные в строке, которые перечислены через запятую. То есть по сути метод match возвращает массив из совпадений.
Если метод match не находит совпадений, то он возвращает null.
Модификаторы шаблонов можно увидеть все в той же шпаргалке по регулярным выражениям.