Виталий Котов
Как работает метод match() - JavaScript
Метод match()
возвращает результат сопоставления строки с регулярным выражением.
const message = "JavaScript is a fun programming language.";
// регулярное выражение, которое проверяет, содержит ли сообщение «programming»
const exp = /programming/;
// проверка, присутствует ли exp в message
let result = message.match(exp);
console.log(result);
/*
Вывод в консоль: [
'programming',
index: 20,
input: 'JavaScript is a fun programming language.',
groups: undefined
]
*/
Синтаксис match()
Синтаксис метода match()
следующий:
str.match(regexp);
Где str
- это строка.
Параметры match()
Метод match()
принимает:
regexp
- объект регулярного выражения (Аргумент неявно преобразуется в
RegExp
, если он не является объектомRegExp
)
- объект регулярного выражения (Аргумент неявно преобразуется в
Примечание: если вы не указываете никаких параметров,
match()
возвращает[""]
.
Возвращаемое значение match()
- Возвращает
Array
, содержащий совпадения, по одному элементу для каждого совпадения. - Возвращает
null
, если совпадение не найдено.
Примеры
Пример 1: Использование match()
const string = "I am learning JavaScript not Java.";
const re = /Java/;
let result = string.match(re);
console.log("Результат сопоставления /Java/ :");
console.log(result);
const re1 = /Java/g;
let result1 = string.match(re1);
console.log("Результат сопоставления /Java/ с флагом g:");
console.log(result1);
Вывод в консоль:
Результат сопоставления /Java/ :
[
'Java',
index: 14,
input: 'I am learning JavaScript not Java.',
groups: undefined
]
Результат сопоставления /Java/ с флагом g:
[ 'Java', 'Java' ]
Здесь мы видим, что без использования флага g
мы получаем в качестве результата только первое совпадение, но с подробной информацией, такой как индекс, вход и группы.
Примечание: если регулярное выражение не включает флаг
g
,str.match()
вернет только первое совпадение, аналогичноRegExp.exec()
. Возвращаемый элемент также будет иметь следующие дополнительные свойства:
groups
- объект именованных групп захвата, ключами которых являются имена, а значениями - полученные совпадения.
index
- индекс поиска, в котором был найден результат.
input
- копия строки поиска.
Пример 2: Совпадающие разделы в строке
const string = "My name is Albert. YOUR NAME is Soyuj.";
// выражение соответствует регистронезависимому "name is"+ любые буквы до точки (.)
const re = /name\sis\s[a-zA-Z]+\./gi;
let result = string.match(re);
console.log(result); // [ 'name is Albert.', 'NAME is Soyuj.' ]
// использование именованных групп захвата
const re1 = /name\sis\s(?<name>[a-zA-Z]+)\./i;
let found = string.match(re1);
console.log(found.groups); // {name: "Albert"}
Вывод в консоль:
[ 'name is Albert.', 'NAME is Soyuj.' ]
{name: "Albert"}
Здесь мы использовали регулярное выражение для сопоставления определенной части строки. Мы также можем перехватить определенные группы в match
, используя синтаксис, как показано выше.
Карта развития разработчика
Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile