Найти, удалить и обернуть часть URL с помощью RegEx - PullRequest
0 голосов
/ 12 июня 2019

Мне нужна помощь в написании регулярного выражения, которое позволяет мне находить и заменять части URL-адресов.Мне нужно найти строки между : и / или ничего (поскольку это может быть конец строки), удалить символ :, а затем обернуть его в {}.

Вот как могут выглядеть строки

/submissions/search
/submissions/:_id
/points/:serial
/deals/:_id/search

Вот как я хочу, чтобы они выглядели после запуска String.replace():

/submissions/search
/submissions/{_id}
/points/{serial}
/deals/{_id}/search

Ps.Основанием для этого является то, что мне нужно сгенерировать спецификации OpenAPI из Express .Express использует «:» для динамических параметров, в то время как OpenAPI использует {}.Регулярное выражение будет одинаковым независимо от варианта использования.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Вы можете использовать это: :([^/]+)(\/|$)

  • : -> обнаруживает :
  • ([^/]+) -> захватывает один или несколько, которые не /
  • (\/|$) -> обнаруживает / или конец строки
  • g -> заменяет несколько вхождений в строке

var urls = [
  '/submissions/search',
  '/submissions/:_id',
  '/points/:serial',
  '/deals/:_id/search',
  '/deals/:_id/:serial/search', //will detect more than one
];

for(var i = 0, l = urls.length; i < l; i++){
  console.log(urls[i].replace(/:([^/]+)(\/|$)/g, '{$1}$2'));
}
1 голос
/ 12 июня 2019

Regex : :([^\/\n]+)

Подробности:

  • () Группа
  • [^]Соответствует одному символу, отсутствующему в списке
  • + Соответствует от одного до неограниченного времени
  • \1 Группа 1.

Замена : {\1}

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