JSFiddle - React, Tailwind, and code Playground
HTML
<table>
<tr><th>Path</th><th>Match</th></tr>
</table>
CSS
table { border-collapse: collapse }
td { border: 1px solid black }
JavaScript
var regex = /^\/(?!public|static|files)([^\/]+)?\/?([^\/]+)?\/?([^\/]+)?\/?(.*)$/i;
var table = $("table");
var paths = [
"/controller/action/4/var:something/",
"/controller/action",
"/controller",
"/public/action/4/var:something/",
"/static",
"/files/action"
];
paths.forEach(function (path) {
var m, tr = $("<tr></tr>").appendTo(table);
tr.append($("<td>" + path + "</td>"));
if( m = path.match(regex) ) {
var s = [].slice.call(m, 1).join("<br>")
tr.append("<td>" + s + "</td>");
} else {
tr.append("<td><em>No match</em></td>");
}
});