Regex de enrutamiento de Javascript

Necesito construir un enrutador, que dirija una solicitud REST a un controlador y acción correctos. Aquí algunos ejemplos:

POST /users
GET /users/:uid
GET /users/search&q=lol
GET /users
GET /users/:uid/pictures
GET /users/:uid/pictures/:pid

Es importante tener una sola expresión regular y lo mejor posible, ya que el enrutamiento es esencial y se realiza en cada solicitud.

Primero tenemos que reemplazar: (hasta el final o hasta la siguiente barra inclinada /) en las URL con una expresión regular, que luego podemos usar para validar la URL con la URL de solicitud.

¿Cómo podemos reemplazar estas rutas dinámicas con expresiones regulares? Como buscar una cadena que comienza con ":" y termina con "/", final de cadena o "&".

Esto es lo que intenté:

var fixedUrl = new RegExp(url.replace(/\\\:[a-zA-Z0-9\_\-]+/g, '([a-zA-Z0-0\-\_]+)'));

Por alguna razón no funciona. ¿Cómo podría implementar una expresión regular que reemplace: id con una expresión regular, o simplemente los ignore cuando se compara con la url de solicitud real?

Gracias por la ayuda

Respuestas a la pregunta(1)

Su respuesta a la pregunta