/** * The ultimate split path. * Extracts dirname, filename, extension, and trailing URL params. * Correct handles: * empty dirname, * empty extension, * random input (extracts as filename), * multiple extensions (only extracts the last one), * dotfiles (however, will extract extension if there is one) * @param {string} path * @return {Object} Object containing fields "dirname", "filename", "extension", and "params" */ var splitPath = function(path) { var result = path.replace(/\\/g, "/").match(/(.*\/)?(\..*?|.*?)(\.[^.]*?)?(#.*$|\?.*$|$)/); return { dirname: result[1] || "", filename: result[2] || "", extension: result[3] || "", params: result[4] || "" }; };