Мне нужно соответствовать следующему формату URL
/yc/leroy-jenkins-123
Поэтому мне нужно сопоставить как часть /yc/, так и часть 123.
Я могу сопоставить URL-адрес, когда он /leroy-jenkins-123, со следующим
server.get(/([^-]*)$/, (req, res) => {
const actualPage = '/profile'
const queryParams = { id: req.params[0] }
app.render(req, res, actualPage, queryParams)
})
Итак, я могу сопоставить 123 с ([^-]+)$, но как мне также сопоставить часть /yc/?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто чередуйте с ^/\w+/:
server.get(/([^-]+)$|^/\w+//, ...
Также обратите внимание, что вам, вероятно, следует повторять символ хотя бы один без тире перед концом строки, иначе он может соответствовать пустой строке в конце, например, URL-адресу
/
и ничто другое не совпало бы, потому что в конце строки есть (по крайней мере) ноль символов, отличных от тире, что может быть нежелательно.
Если группа на самом деле не используется для чего-то, не стесняйтесь полностью отключать ее:
server.get(/[^-]+$|^/\w+//, ...
Вы можете использовать это регулярное выражение для захвата значений из группы1 и группы2,
^(/[^/]+/).*?(\d+)$
Демонстрация регулярных выражений
Объяснение:
^ — соответствует началу строки(/[^/]+/) — соответствует /, за которым следует любой символ, кроме /, один или несколько, за которым следует /, и фиксирует это значение в группе1.*? — позволяет необязательное сопоставление нуля или более любых символов(\d+)$ — Соответствует одной или нескольким цифрам и фиксирует их в группе 2, за которой следует конец строки.
Очень хорошо объясненный ответ ++