Это синтаксическая ошибка, которая выдается при первоначальном анализе кода, не при запуске шаблона, поэтому try
/ catch
не перехватывает его.
1007 * возможно динамически проверять синтаксис, передавая строку с lookbehind конструктору регулярных выражений:
try {
new RegExp('(?<!x)');
console.log('Supported');
} catch (e) {
console.log('Not Supported');
}
Но это довольно странно. Как только вы узнаете, поддерживается ли он, чтобы использовать его в другом месте в том же сценарии, вам придется либо везде использовать конструктор RegExp, что не очень хорошая идея , либо добавить другой тег script, содержащий литерал регулярного выражения lookbehind.
Лучшим вариантом является полное исключение lookbehind и использование альтернативных методов, таких как захват групп. Почти всегда тривиально легко заменить внешний вид рисунком без внешнего вида.