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