Сопоставление подстроки

#javascript #node.js #reactjs

Вопрос:

У меня есть этот URL /games/12345/stock -адрес .

games/ Часть и /stock часть всегда будут одинаковыми, но 12345 часть может измениться.

Я получаю этот URL-адрес не из URL-адреса, а просто в виде простой строки.

Что я хочу сделать, так это то, что я хотел бы иметь что-то подобное

/alarms/${anything in here will match}/notifications .

Как я могу это сделать?

Комментарии:

1. взгляните на регулярные выражения: developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…

2. Вы спрашиваете о том, как сопоставить этот URL-адрес в экспресс-обработчике или просто в общих чертах, как сопоставить такую строку?

3. @eol В общем, как я мог сопоставить такую строку.

4. Ваш ${что-нибудь здесь будет соответствовать} также может включать»/»? Если нет, вы можете быть довольны string.split (‘/’), и вам не нужно использовать регулярные выражения.

5. или вы можете использовать функцию split (). пусть parts = url.split(‘/запас’); parts = части[0].split(‘игры/’); console.log(части[1]);

Ответ №1:

Для этого вы можете использовать регулярное выражение. создайте шаблон со статической частью, содержащей часть с динамическим идентификатором.

Затем вы можете вызвать сопоставление по каждому URL-адресу. первым аргументом будет статический URL-адрес, а вторым — идентификатор.

 var route = "/games/:uid/stock";
var routeMatcher = new RegExp(route.replace(/:[^s/] /g, '([\w-] )'));
var url1 = "/games/12345/stock";
var url2 = "/games/333/stock";

console.log(url1.match(routeMatcher)[1])
console.log(url2.match(routeMatcher)[1])