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 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Дивіться також
- Посібник Регулярні вирази
RegExp