Regex strip out возвращает пробелы из внутренних скобок - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь написать выражение регулярного выражения, которое удалит все разрывы строк / возврат / пробелы / табуляции внутри только первого совпадения скобок.

Например:

foo\r

{{\n    $uppercase($for(Baz, "roar\\n foo {{value}} \\r"))\n    }}
{{$uppercase("baz\n") }}

baz

в идеале вернет:

foo\r

{{$uppercase($for(Baz, "roar\\n foo {{value}} \\r"))}}
{{$uppercase("baz\n")}}

baz

Я пробовал что-то вроде этого:

/(?:\{\{)(?:(?:\n)|(?:\r\n))(?:\\r)\t(?:\}\})/g

, но, похоже, не нашел правильного соответствия.

Спасибо!

1 Ответ

0 голосов
/ 19 июня 2020

Это должно сработать! Идея состоит в том, чтобы разделить строку на части на основе совпадающих скобок, скобок и без них. L oop через ваши фрагменты, найдите фрагменты с двойными скобками, затем удалите все разрывы строк только из этого фрагмента. После сборки l oop соберите шнур. Вуаля.

const newString = str.split(/({{.*?}})/sg).reduce((a, v) => 
  (v.includes('{{') ? a + v.replace(/(\r\n|\n|\r)/gm,"") : a+v)
,'');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...