Deff,
решил внести свою лепту.. что-то у тебя всегда громоздкие коды получаются. все тоже самое делает эта рега и даже больше:
var a = "https://www.google.ru/intl/ru/ads/ //mc.yandex.ru/watch/528861";
alert( a.replace( /(?:(?:https?|file|ftp)?:?\/\/([^\/\s]+)|([^\/]+\.(?:ru|com|net|org|biz|info|рф)))[^\s]*/ig, '$1$2') );
дык вот объясни в чем смысл рекурсию делать?