var str = 'https://juejin.cn/post/7201491839815139389#lun?name=jack&age=18';
var str2 = 'https://juejin.cn/post/7201491839815139389';
var str3 = 'https://juejin.cn';
function test (str) {
const matchResult = str.match(/(https?:\/\/.+.cn)([^#]*)(#?[^?]*)\??(.*)/);
return {
origin: matchResult[1] || '',
path: matchResult[2] || '',
hash: matchResult[3] || '',
query: matchResult[4] || {}
};
}
console.log(test(str));
console.log(test(str2));
console.log(test(str3));