Проверка совместимости для проверочных утверждений - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь проверить совместимость для негативных утверждений за пределами взгляда.

Что я, естественно, попробую, так это:

try {
     /((?<!test)$)/.test('test'); 
     // if it doesn't throw an error it is supported
}
catch (e) {
     // if it does throw an error it is not supported
}

Но по какой-то причине он падает и не перехватывает SyntaxError: invalid regexp group

Есть ли способ отловить эту ошибку?

У вас есть какие-либо рекомендации по проверке совместимости для этого?

Спасибо!

1 Ответ

1 голос
/ 04 мая 2020

Это синтаксическая ошибка, которая выдается при первоначальном анализе кода, не при запуске шаблона, поэтому try / catch не перехватывает его.

1007 * возможно динамически проверять синтаксис, передавая строку с lookbehind конструктору регулярных выражений:

try {
  new RegExp('(?<!x)');
  console.log('Supported');
} catch (e) {
  console.log('Not Supported');
}

Но это довольно странно. Как только вы узнаете, поддерживается ли он, чтобы использовать его в другом месте в том же сценарии, вам придется либо везде использовать конструктор RegExp, что не очень хорошая идея , либо добавить другой тег script, содержащий литерал регулярного выражения lookbehind.

Лучшим вариантом является полное исключение lookbehind и использование альтернативных методов, таких как захват групп. Почти всегда тривиально легко заменить внешний вид рисунком без внешнего вида.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...