RegExp.prototype.test()

Метод test() (перевірити) примірників RegExp виконує пошук збігу між своїм регулярним виразом і заданим рядком. Повертає true або false.

Об'єкти RegExp JavaScript мають стан, коли мають позначку глобальності чи липкості (наприклад, /foo/g або /foo/y). Вони зберігають lastIndex від попереднього збігу. Потайки використовуючи цю властивість, test() може використовуватись для ітерації по багатьох збігах в одному рядку тексту (з групами захоплення).

Спробуйте його в дії

Синтаксис

test(str)

Параметри

str

Рядок, в якому буде виконуватись пошук збігу з регулярним виразом. Будь-які значення зводяться до рядка, тож пропуск цього параметра чи передача undefined змусить test() шукати рядок "undefined", а це рідко саме те, що необхідно.

Повертає

true, якщо є збіг між регулярним виразом і рядком str. Інакше – false.

Опис

Слід використовувати test() щоразу, коли необхідно знати, чи є відповідність патернові у рядку. test() повертає булеве значення, на відміну від методу String.prototype.search() (котрий повертає індекс збігу, або -1, якщо збігу не знайдено).

Щоб отримати більше інформації (але з повільнішим виконанням), слід використовувати метод exec(). (Він подібний до методу String.prototype.match().)

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

Приклади

Застосування test()

Простий приклад, що перевіряє, чи поміщено "hello" на самому початку рядка, і повертає булів результат.

const str = "hello world!";
const result = /^hello/.test(str);

console.log(result); // true

Наступний приклад виводить повідомлення, котре залежить від успіху перевірки:

function testInput(re, str) {
  const midString = re.test(str) ? "містить" : "не містить";
  console.log(`${str} ${midString} ${re.source}`);
}

Використання test() на регулярному виразі з позначкою глобальності

Коли регулярний вираз має позначку глобальності, то test() збільшує властивість lastIndex регулярного виразу. (RegExp.prototype.exec() так само її збільшує.)

Подальші виклики test(str) відновлять пошук у str, починаючи від lastIndex. Властивість lastIndex збільшуватиметься далі щоразу, коли test() повертатиме true.

[!NOTE] Поки test() повертає true, lastIndex не буде скинуто – навіть при перевірці іншого рядка!

Коли test() повертає false, властивість lastIndex регулярного виразу виклику скидається до 0.

Наступний приклад демонструє цю поведінку:

const regex = /foo/g; // задана позначка глобальності

// regex.lastIndex – на 0
regex.test("foo"); // true

// regex.lastIndex тепер – на 3
regex.test("foo"); // false

// regex.lastIndex – на 0
regex.test("barfoo"); // true

// regex.lastIndex – на 6
regex.test("foobar"); // false

// regex.lastIndex – на 0
regex.test("foobarfoo"); // true

// regex.lastIndex – на 3
regex.test("foobarfoo"); // true

// regex.lastIndex – на 9
regex.test("foobarfoo"); // false

// regex.lastIndex – на 0
// (...і так далі)

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
test
Chrome Full support 1
Edge Full support 12
Firefox Full support 1
Internet Explorer Full support 4
Opera Full support 5
Safari Full support 1
WebView Android Full support 1
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також