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') ничего не найдет, т.к. перед числом есть знак минус.

Examples

 

Browser support

 

See also