Вызов title.replace
не изменит заголовок, но вернет строку, в которой значения были заменены. Вам необходимо использовать возвращаемое значение:
var html = "<div>"+title+"<br/>";
var newTitle = document.write(title.replace(/ /g,"-"));
html+= '<p><a href="go.aspx?title=' + newTitle + '">Details<\/a></p></div>';
Регулярное выражение в порядке, но оно заменит только пробелы, а не все пробелы.