Сначала вы можете сопоставить протокол http с необязательными s и ://
Затем использовать класс отрицательных символов [^\/\r\n]+
для сопоставления с любым символом, кроме /
В захвате группа соответствует прямому sla sh, за которым следует сопоставление любого символа, кроме новой строки 1+ раз (\/.+)
, чтобы предотвратить совпадение одиночного sla sh в конце.
Значение находится в первой группе захвата
^https?:\/\/[^\/\r\n]+(\/.+)$
Regex demo
const regex = /^https?:\/\/[^\/\r\n]+(\/.+)$/gm;
const str = `thisisatest.com
https://thisiatest.com/
http://thisiatest.com/folder/folder2/
http://thisisatest.com/folder
https://
http://
`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
console.log(m[1]);
}