Regex - захватить помеченный шаблонный литерал - PullRequest
0 голосов
/ 02 апреля 2019

Мне нужна помощь в построении регулярного выражения, чтобы найти все теговые литералы шаблона в файле js

пример:

const thing = test`
  background-color: red;
`;

Результат регулярного выражения:

test`
  background-color: red;
`

Я могу сделать это с помощью:

(test`(?:[^`])*`)

проблема в том, что я не могу понять, как исключить внутренние литералы шаблона.

Например:

const thing = test`
  background-color: ${show ? `red` : `blue`};
`;

ожидаемое совпадение с регулярным выражением:

test`
  background-color: ${show ? `red` : `blue`};
`

фактическое совпадение:

test`
  background-color: ${show ? `

есть идеи?

1 Ответ

3 голосов
/ 02 апреля 2019

Регулярное выражение здесь вам не поможет, лучше всего проанализировать файл JS с помощью синтаксического анализатора AST, например @babel/parser - https://babeljs.io/docs/en/next/babel-parser.html

...