Сводка
Метод match()
возвращает получившиеся совпадения при сопоставлении строки с регулярным выражением.
Синтаксис
str.match(regexp)
Параметры
regexp
- Объект регулярного выражения. Если будет передан объект
obj
, не являющийся регулярным выражением, он будет неявно преобразован в объектRegExp
через вызов конструктораnew RegExp(obj)
.
Возвращаемое значение
array
- Объект
Array
, содержащий результаты сопоставления, илиnull
, если ничего не было сопоставлено.
Описание
Если регулярное выражение не содержит флаг 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'] // 'Глава 3.4.5.1' - это первое сопоставление и первое значение, // запомненное группой `(Глава \d+(\.\d)*)`. // '.1' - это последнее значение, запомненное группой `(\.\d)`.
Пример: использование флагов глобальности и игнорирования регистра с методом 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).