Створення регулярних виразів
Регулярні вирази в 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
Коментарі
Дописати коментар