Перейти до основного вмісту

Регулярні вирази в JavaScript

Створення регулярних виразів

Регулярні вирази в JavaScript можна створити одним із наступних способів:


let reg1 = new RegExp("abc");
let reg2 = /abc/;

Основні можливості та метод test()

Метод test() дозволяє перевірити, чи відповідає наступний текст регялрному виразу.


console.log(reg1.test("abcd")); //true
console.log(reg2.test("abbcd")); //false

Регуоярний вираз для перевірки наявності цифр в рядку:


console.log(/[0-9]/.test("year 2025")); //true
console.log(/[0-9]/.test("this year")); //false

Часто використовуються наступні позначення:

  • \d - будь-яка цифра
  • \w - алфавітно-цифровий символ
  • \s - пробільний символ (пробіл, табуляція, новий рядок)
  • \D - не цифра
  • \W - не алфавітно-цифровий символ
  • \S - не пробільний символ
  • . - будь-який символ окрім переведення рядка

Для інверсії можна використати символ ^. Наприклад:


let notBinary = /[^01]/;
console.log(notBinary.test("1040011210101110")); //true
console.log(notBinary.test("10001110101110")); //false

Символ + означає повторення 1 або більше разів, * - 0 або більше, символ ? означає, що частина шаблона може зустрітися 0 або 1 раз. Можна задати точну кількість раз повторення шаблону у фігурних дужках. Також можна задати інтервал - два числа у фігурних дужках.

Круглі дужки використовуються для групування.


console.log(/(ab)+/.test("abcabdabf")); //true
console.log(/(abk)*/.test("abcabdabf")); //true
console.log(/(abk?)/.test("abcabdabf")); //true
console.log(/((ab).*){3}/.test("abcabdabf")); //true
console.log(/((ab).*){2,4}/.test("abcabdabf")); //true

Можна використовувати аналог оператора АБО:


console.log(/(ba)|(bc)/.test("abcabdabf"));//true

Для ігнорування відмінностей між великими та малими символами можна використати прапор i:


console.log(/(aB)+/.test("abcabdabf")); //false
console.log(/(aB)+/i.test("abcabdabf")); //true

Інші методи для роботи з регулярними виразами

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


const str = "abcabdabf";

// Пошук усіх входжень "ab"
const matches = str.match(/ab/g);
console.log(matches); // ['ab', 'ab', 'ab']

// Пошук першого входження "ab"
const firstMatch = str.match(/ab/);
console.log(firstMatch); // ['ab', index: 0, input: 'abcabdabf', groups: undefined]

replace() - замінює збіги у рядку відповідно до регулярного виразу або рядка.


const str = "abcabdabf";

// Замінюємо всі входження "ab" на "XY"
const replaced = str.replace(/ab/g, "XY");
console.log(replaced); // XYcXYdXYf

// Замінюємо лише перше входження "ab" на "XY"
const replacedFirst = str.replace(/ab/, "XY");
console.log(replacedFirst); // XYcabdabf

Замість прапора g можна використати функцію replaceAll()

search() - повертає індекс першого збігу, знайденого в рядку, відповідно до регулярного виразу. Якщо збігів немає, повертає -1.


const str = "abcabdabf";

// Пошук першого входження "ab"
const firstIndex = str.search(/ab/);
console.log(firstIndex); // Виведе: 0 (перший "ab" починається на індексі 0)

// Пошук першого входження "xy" (якого немає)
const notFound = str.search(/xy/);
console.log(notFound); // Виведе: -1

Коментарі