String.match() в JavaScript — пошук за регулярним виразом


Загальний опис

Метод String.prototype.match() використовується для пошуку в рядку з використанням регулярного виразу. Він повертає масив, що містить всі знайдені співпадіння, або null, якщо співпадінь не знайдено. Цей метод є важливим інструментом у роботі з текстовими даними, особливо коли потрібно здійснити складний пошук або екстракцію певних шаблонів з рядка.

Щоб використовувати match(), потрібно викликати його на рядку, передавши як аргумент регулярний вираз. Наприклад:

let text = "Коти і собаки - друзі людини.";
let pattern = /[а-яіїєґ]+/gi;
console.log(text.match(pattern)); // поверне ["Коти", "і", "собаки", "друзі", "людини"]

У цьому прикладі match() шукає всі слова, що складаються з букв українського алфавіту у рядку text та повертає масив цих слів.

Важливою особливістю match() є його поведінка з різними прапорцями регулярних виразів. Наприклад, прапорець g (глобальний пошук) визначає, чи буде метод шукати всі співпадіння або тільки перше. Без прапорця g, match() повертає додаткову інформацію про знайдене співпадіння, таку як індекс та вхідний рядок:

let firstWordPattern = /[а-яіїєґ]+/i;
console.log(text.match(firstWordPattern)); // поверне ["Коти", index: 0, input: "Коти і собаки - друзі людини.", groups: undefined]

Метод match() є незамінним при роботі з текстом у JavaScript, особливо коли необхідно виконати складні пошукові операції або аналіз текстових даних. Використання цього методу дозволяє легко знаходити, перевіряти та екстрактувати інформацію з рядків, зробивши роботу з текстовими даними більш гнучкою та ефективною.

автор: Bond

Порада

Використовуйте String.prototype.match() для пошуку у рядку з допомогою регулярних виразів. Цей метод дозволяє шукати складні шаблони та зразки у тексті, що робить його могутнім інструментом для обробки тексту, такого як валідація електронних адрес або номерів телефонів.

автор: Bond
Нотатка

Метод match() повертає масив, який містить усі збіги. Якщо збігів не знайдено, результатом буде null. Це важливо враховувати при написанні умовних конструкцій, щоб уникнути помилок обробки результату.

автор: Bond
Нотатка

Регулярні вирази в JavaScript можуть містити прапорці, які змінюють поведінку пошуку. Наприклад, прапорець "g" (глобальний пошук) дозволяє знайти всі збіги в рядку, а не лише перший. Важливо розуміти ці прапорці для ефективного використання match().

автор: Bond

Синтаксис

match(regexp)

Параметри

regexp

Регулярний вираз, з яким буде порівнюватися рядок. Це може бути об'єкт регулярного виразу або будь-який об'єкт, що має метод Symbol.match. Використання цього аргументу дозволяє виконувати складний пошук у рядку, включаючи пошук за шаблонами та групами захоплення.

автор: Bond

Повернення

array

Повертає масив, вміст якого залежить від наявності або відсутності глобального прапорця (g) в регулярному виразі, або null, якщо співпадіння не знайдені. Якщо використовується прапорець g, метод повертає усі результати, що відповідають регулярному виразу, але без урахування груп захоплення. Якщо прапорець g не використовується, повертається лише перше повне співпадіння та його пов'язані групи захоплення. У цьому випадку match() повертає такий же результат, як RegExp.prototype.exec(), а саме масив з додатковими властивостями.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
1 1 1 4 12 4
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 1
Підтримка: серверні переглядачі
Переглядач Node.js Deno
0.10.0 1.0

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі використовується String.prototype.match() для знаходження всіх слів у рядку. Метод match() приймає регулярний вираз і повертає масив з усіма знайденими співпадіннями. Це простий спосіб вилучити окремі слова з тексту.

// Створюємо рядок для пошуку
let sentence = "JavaScript - це цікаво і корисно!";

// Використовуємо регулярний вираз для знаходження слів
let words = sentence.match(/\b\w+\b/g);

console.log(words); // Виводить: ["JavaScript", "це", "цікаво", "і", "корисно"]
автор: Bond

У цьому прикладі користувачі можуть ввести будь-який текст та регулярний вираз. Після натискання кнопки "Знайти збіги", вони побачать всі збіги у введеному тексті, якщо вони є, або повідомлення про те, що збігів немає, або помилку, якщо регулярний вираз неправильний. Це дасть користувачам наочне уявлення про роботу match() у JavaScript.

HTML

<header>
  <h2 class="title">String.prototype.match()</h2>
  <p class="description">Знаходить збіги регулярного виразу в рядку.</p>
</header>
<main>
  <div class="result">
    <input type="text" id="inputText" placeholder="Введіть текст...">
    <input type="text" id="regexPattern" placeholder="Введіть регулярний вираз...">
    <button onclick="findMatches()">Знайти збіги</button>
    <p id="matches">Збіги: <span id="matchResult">-</span></p>
  </div>
</main>

CSS

body {
  font-size: 16px;
  line-height: 1.5;
  font-family: monospace;
}

header {
  background-color: #f1f1f1;
  margin-bottom: 25px;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

header h2.title {
  padding-bottom: 15px;
  border-bottom: 1px solid #999;
}

header p.description {
  font-style: italic;
  color: #222;
}

.result {
  background-color: #f8f8f8;
  padding: 15px;
  -webkit-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  -moz-box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
  box-shadow: 0px 0px 3px 0px rgba(118, 118, 118, 1);
}

input[type="text"] {
  margin: 10px 0;
  padding: 5px;
  width: 80%;
}

button {
  cursor: pointer;
  padding: 5px 10px;
  margin-bottom: 10px;
}

#matches {
  margin-top: 10px;
}

JS

function findMatches() {
  var inputText = document.getElementById('inputText').value;
  var regexPattern = document.getElementById('regexPattern').value;
  try {
    var regex = new RegExp(regexPattern, 'g');
    var matches = inputText.match(regex);
    document.getElementById('matchResult').textContent = matches ? matches.join(', ') : 'Немає збігів';
  } catch (e) {
    document.getElementById('matchResult').textContent = 'Помилка у регулярному виразі';
  }
}
//# sourceURL=pen.js
автор: Bond

У цьому складнішому прикладі використовується match() для вилучення дати у певному форматі з рядка. Цей метод є особливо корисним для розбору рядків за певним шаблоном, наприклад, при роботі з лог-файлами або обробці користувацького вводу.

// Створюємо рядок з датою
let logEntry = "Помилка: 404; Дата: 13/05/2023; Статус: не знайдено";

// Використовуємо регулярний вираз для знаходження дати
let datePattern = /Дата: (\d{2}\/\d{2}\/\d{4})/;
let dateMatch = logEntry.match(datePattern);

console.log(dateMatch[1]); // Виводить: "13/05/2023"
автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід