Сводка
Метод match()
возвращает получившиеся совпадения при сопоставлении строки с регулярным выражением.
Синтаксис
str.match(regexp)
Параметры
regexp
- Объект регулярного выражения. Если будет передан объект
obj
, не являющийся регулярным выражением, он будет неявно преобразован в объектRegExp
через вызов конструктораnew RegExp(obj)
.
Возвращаемое значение
Описание
Если регулярное выражение не содержит флаг g
, возвращаемый результат будет тем же самым, что и при вызове метода RegExp.exec()
. Возвращаемый объект массива имеет дополнительное свойство input
, которое содержит оригинальную строку. Кроме того, он имеет свойство index
, которое представляет индекс (нумерация с нуля) сопоставления в строке.
Если регулярное выражение содержит флаг g
, метод вернёт массив, содержащий все сопоставления. Если сопоставлений не было, метод вернёт значение null
.
Смотрите также: методы объекта RegExp
- Если вам надо просто узнать, подпадает ли строка под регулярное выражение, используйте метод
search()
. - Если вам нужно найти только первое сопоставление, вы можете использовать метод
RegExp.exec()
.
Примеры
Пример: использование метода match()
В следующем примере метод match()
используется для поиска слова 'Глава'
, за которым следуют 1 или более цифр, за которыми следуют 0 или более раз группы из точки и цифры. Регулярное выражение включает флаг i
, так что регистр букв игнорируется.
var str = 'Глава 3.4.5.1 содержит дополнительную информацию';
var re = /(глава \d+(\.\d)*)/i;
var found = str.match(re);
console.log(found);
// выведет [ 'Глава 3.4.5.1',
// 'Глава 3.4.5.1',
// '.1',
// index: 0,
// input: 'Глава 3.4.5.1 содержит дополнительную информацию' ]
// 'Глава 3.4.5.1' - это первое сопоставление и первое значение,
// сопоставленное с группой `(Глава \d+(\.\d)*)`.
// '.1' - это последнее значение, сопоставленное с группой `(\.\d)`.
// Свойство 'index' содержит значение (0) индекса совпадения
// относительно начала сопоставления
// Свойство 'input' содержит значение введенной строки.
Пример: использование флагов глобальности и игнорирования регистра с методом match()
Следующий пример демонстрирует использование флагов глобального поиска и игнорирования регистра символов вместе с методом match()
. Возвращаются все буквы от А до Д и от а до д, каждая в своём элементе массива.
var str = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя';
var regexp = /[А-Д]/gi;
var matches_array = str.match(regexp);
console.log(matches_array);
// ['А', 'Б', 'В', 'Г', 'Д', 'а', 'б', 'в', 'г', 'д']
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 3-е издание. | Стандарт | Изначальное определение. Реализована в JavaScript 1.2. |
ECMAScript 5.1 (ECMA-262) Определение 'String.prototype.match' в этой спецификации. |
Стандарт | |
ECMAScript 2015 (6th Edition, ECMA-262) Определение 'String.prototype.match' в этой спецификации. |
Стандарт |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |
Примечания по Firefox
- Начиная с Gecko 27 (Firefox 27 / Thunderbird 27 / SeaMonkey 2.24), этот метод был поправлен для соотвествия спецификации ECMAScript. При вызове метода
match()
с глобальным регулярным выражением, свойствоRegExp.lastIndex
(если оно определено) будет сбрасываться в0
(баг 501739).