Что я делаю не так в регулярке?
Может, не нужно проверять всю строку? Если все линки правильные-авитные, то проверять только окончание строки – можно реверснуть строку .split('').reverse().join('') и проверять только начало /^\d{4,}_/
Вот одной регуляркой под ваше требование:var re = new RegExp('^https?://(\\w+\\.)?avito\\.ru/([^/]+/)+([a-z_]+(?!_\\d{4,}))$');

var t1 = 'https://www.avito.ru/moskva/odezhda_obuv_aksessuary/magazin_pizham_kigurumi_na_lubyanke_56545';
var t2 = 'https://www.avito.ru/moskva/kvartiry/snimu';

re.test(t1) // false
re.test(t2) // true
Попробуй сделать от противного. ^https:\/{2}(?:.*?\.)?avito\.ru[\/\w-]+(_\d{4,})$