#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])