Typescript не может анализировать именованные группы в регулярных выражениях - PullRequest
0 голосов
/ 29 января 2019

У меня есть строка кода

regex = /^(?<aa>[0-9]{2})-(?<bb>[0-9]{6})-(?<cc>[0-9]{6})-(?<d>[0-9])$/;

И машинопись (или это веб-пакет?) Жалуется:

Module parse failed: Error parsing regular expression: Invalid regular expression: /^(?<aa>[0-9]{2})-(?<bb>[0-9]{6})-(?<cc>[0-9]{6})-(?<d>[0-9])$/: Invalid group (18:23)
    You may need an appropriate loader to handle this file type.

Кажется, проблема с именованными группами.Это допустимое регулярное выражение в javascript.

Я использую машинопись 2.9.2

Я настоятельно предпочитаю использовать именованные группы.Что я могу сделать, чтобы они компилировались?

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

К сожалению, передача самого регулярного выражения не поддерживается самим Typescript.См. выпуск # 24531 .

Если вы используете Babel aswell в своей цепочке сборки, рассмотрите plugin-transform-named-capturing-groups-regex

0 голосов
/ 29 января 2019

Это фактически недопустимое регулярное выражение в javascript в соответствии с https://regexr.com/. И Firefox и Edge.

Вернее, это зависит от браузера.Поддержка именованных групп была добавлена ​​в ES2018.Таким образом, ваш пробег может отличаться.

См. http://kangax.github.io/compat-table/es2016plus/ для совместимости.

Компилятор Typescript не тот, кто выдает ошибку, это ваш загрузчик модулей webpack.Я бы попытался установить целевое значение ES2018 и посмотреть, работает ли это.

В качестве альтернативы см. Ответ о деструктуризации массива на Именованные группы захвата в регулярном выражении JavaScript? .

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