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)
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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