This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Assertions

Проверка (assertion) задаёт возможность совпадения одним из указанных способов. Проверка может содержать условные выражения, опережающие (look-ahead) и ретроспективные (look-behind) проверки.

Типы

Примечание: Символ ? также может быть использован как обычный квантификатор.

Выражение Что означает
x(?=y) Опережающая проверка: x подходит только когда за x следует y. Например, /Jack(?=Sprat)/ сработает для "Jack" только когда за ним будет "Sprat". /Jack(?=Sprat|Frost)/ подойдёт для "Jack" только когда за ним будет "Sprat" или "Frost". Следует заметить, что ни "Sprat" ни "Frost" не будут выданы как часть проверки.
x(?!y) Отрицательная опережающая проверка: x подходит только когда за x не следует y. Например, /\d+(?!\.)/ сработает для числа в том случае, если за ним не стоит точка. Выполнение кода /\d+(?!\.)/.exec('3.141') выдаст только число "141", поскольку за "3" следует точка.
(?<=y)x Ретроспективная проверка: x подходит только когда x предшествует y. Например, /(?<=Jack)Sprat/ сработает для "Sprat" только если перед ним есть "Jack". /(?<=Jack|Tom)Sprat/ подойдёт для "Sprat" если перед ним будут "Jack" или "Tom". Заметим, что ни "Jack" ни "Tom" не будут выданы.
(?<!y)x Отрицательная ретроспективная проверка: x подходит только когда x не предшествует y. Например, /(?<!-)\d+/ сработает для числа в том случае, если перед ним не стоит знак минус. Выполнение кода /(?<!-)\d+/.exec('3') выдаст "3". Код /(?<!-)\d+/.exec('-3') ничего не найдёт, т.к. перед числом есть знак минус.