Spec-Zone.ru › JavaScript

RegExp.prototype.test()

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

Метод test() экземпляров RegExp выполняет поиск с этим регулярным выражением для совпадения между регулярным выражением и указанной строкой. Возвращает true, если есть совпадение; false в противном случае.

Объекты RegExp JavaScript являются состоятельными, когда у них установлены флаги global или sticky (например, /foo/g или /foo/y). Они хранят lastIndex из предыдущего совпадения. Используя это внутренне, test() можно использовать для итерации по нескольким совпадениям в строке текста (с группами захвата).

Попробуйте

const str = "table football";

const regex = /fo+/;
const globalRegex = /fo+/g;

console.log(regex.test(str));
// Expected output: true

console.log(globalRegex.lastIndex);
// Expected output: 0

console.log(globalRegex.test(str));
// Expected output: true

console.log(globalRegex.lastIndex);
// Expected output: 9

console.log(globalRegex.test(str));
// Expected output: false

Синтаксис

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) ? "contains" : "does not contain";
  console.log(`${str} ${midString} ${re.source}`);
}

Использование test() для регулярного выражения с флагом "global"

Когда у регулярного выражения установлен глобальный флаг, test() будет продвигать lastIndex регулярного выражения. (RegExp.prototype.exec() также продвигает свойство lastIndex.)

Дальнейшие вызовы test(str) возобновят поиск str, начиная с lastIndex. Свойство lastIndex будет продолжать увеличиваться каждый раз, когда test() возвращает true.

Примечание: До тех пор, пока test() возвращает true, lastIndex не будет сброшен — даже при тестировании другой строки!

Когда test() возвращает false, свойство lastIndex вызываемого регулярного выражения будет сброшено на 0.

Следующий пример демонстрирует это поведение:

const regex = /foo/g; // the "global" flag is set

// regex.lastIndex is at 0
regex.test("foo"); // true

// regex.lastIndex is now at 3
regex.test("foo"); // false

// regex.lastIndex is at 0
regex.test("barfoo"); // true

// regex.lastIndex is at 6
regex.test("foobar"); // false

// regex.lastIndex is at 0
regex.test("foobarfoo"); // true

// regex.lastIndex is at 3
regex.test("foobarfoo"); // true

// regex.lastIndex is at 9
regex.test("foobarfoo"); // false

// regex.lastIndex is at 0
// (...and so on)

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

Спецификация
ECMAScript® 2027 Language Specification
# sec-regexp.prototype.test

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
test
1
12
1
5
1
18
4
10.1
1
1.0
4.4
1
1.0.0
1.0
0.10.0

См. также

  • Руководство по регулярным выражениям
  • RegExp

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API