regexp Опережающая (lookahead) и Ретроспективная (lookbehind) проверки, Негативные проверки, отрицаниие последовательности

Есть два типа проверок:

  • Опережающая (lookahead) проверка - проверка части выражения, которая идет после основного

    Общий синтаксис:

    • Для позитивной опережающей:
      ОсновноеЧтоНужно(?=ТоЧтоДолжноБытьПосле)
    • Для негативной опережающей:
      ОсновноеЧтоНужно(?!ТоЧтоНЕДолжноБытьПосле)
  • Ретроспективная (lookbehind) проверка - проверка части выражения, которая идет перед основным выражением

    Общий синтаксис:

    • Для позитивной ретроспективной:
      (?<=ТоЧтоДолжноБытьПосле)ОсновноеЧтоНужно
    • Для негативной опережающей:
      (?<!ТоЧтоНЕДолжноБытьПосле)ОсновноеЧтоНужно

Ретроспективная проверка - пример

Задача:

Нужно найти последовательность из четырех чисел перед которыми, находится последовательнось из двух символов #&

Решается регуляркой:

/(?<=#&)\d{4}/

Ретроспективная негативная проверка - пример

Задача:

Нужно найти последовательность из четырех чисел перед которыми, НЕ находится последовательнось из двух символов #&

Решается регуляркой:

/(?<!#&)\d{4}/