Сопоставить URL с заполнителями с URL с заполненными заполнителями - PullRequest
0 голосов
/ 11 мая 2018

Я пытаюсь сопоставить два URL-адреса, один с заполнителями и один с заполненными заполнителями в Angular с TypeScript.

Например

URL до заполнители заполнены:

http://this/is/{placeholder1}/{placeholder2}/my/url?limit=10&offset=5

URL после заполнители заполнены:

http://this/is/100Banana/200Apple/my/url?limit=10&offset=5

Цель состоит в том, чтобы сопоставить эти два URL с Regex и получить совпадение. Одна из проблем заключается в том, что заполнители могут быть заполнены всем, что позволяет URL.

Первая попытка состояла в том, чтобы заменить заполнители на регулярные выражения, такие как [^/]+ до совпадения с регулярными выражениями. Но это работает, только если заполнители были в конце URL.

1 Ответ

0 голосов
/ 11 мая 2018

Если вам просто нужно сопоставить их, вам не нужно регулярное выражение. Вы можете сделать это так.

const str1 = 'http://this/is/{placeholder1}/{placeholder2}/my/url?limit=10&offset=5';
const str2 = 'http://this/is/100Banana/200Apple/my/url?limit=10&offset=5';

// url1: url with placeholders
// url2: url with filled placeholders
const compareUrls = (url1, url2) => {
  const u1 = url1.split('/');
  const u2 = url2.split('/');

  if (u1.length !== u2.length) { return false; }

  for (let i = 0; i < u1.length; i++) {
    if (u1[i].startsWith('{placeholder')) { continue; }
    if (u1[i] !== u2[i]) { return false; }
  }
  return true;
};

console.log(compareUrls(str1, str2));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...