Autor Zpráva
wrestler
Profil
Přeji dobrý den.
Ve svém skriptu se snažím nahrazovat za odkaz URL všech následujících formátů:
http://www.nekam.cz
http://nekam.cz
www.nekam.cz

Celý kód je následující:
var urlPattern = /(http:\/\/|http:\/\/www\.|www\.)([a-z0-9-]\.)+([a-z]{2,7})/gi;

function toLink(match){
	if(match.substr(0, 7) == 'http://'){
		var lnkZac = 'http://';
		var lnkZby = match.substr(7);
		var lnkTxt = '';
	} else if(match.substr(0, 11) == 'http://www.'){
		var lnkZac = 'http://www.';
		var lnkZby = match.substr(11);
		var lnkTxt = 'www.';
	} else if(match.substr(0, 4) == 'www.'){
		var lnkZac = 'http://www.';
		var lnkZby = match.substr(4);
		var lnkTxt = 'www.';
	}
	return '<a href="' + lnkZac + lnkZby + '" target="_blank">'
			+ lnkTxt + lnkZby
		+ '<\/a>';
}

document.write('www.stranka.cz'.replace(urlPattern, toLink));


Ve výsledku se ovšem vypíše plain text, nikoli odkaz...
Vidíte někdo prosím v něčem chybu?

Předem děkuji.
wrestler
Profil
Chybu jsem již opravil, byla v regulárním výrazu:

var urlPattern = /(http:\/\/|http:\/\/www\.|www\.)([a-z0-9-]+\.)+([a-z]{2,7})/gi;
wrestler
Profil
Ještě (když už jsem to vlákno založil) bych chtěl závěrem zveřejnit finální odlehčenou (ale stále funkční) verzi skriptu:

var urlPattern = /(http:\/\/|www\.)(?:[a-z0-9-]+\.)+[a-z]{2,7}/gi;

function toLink(match){
	if(match.substr(0, 7) == 'http://'){
		var link = match.substr(7);
	} else if(match.substr(0, 4) == 'www.'){
		var link = match;
	}
	return '<a href="http://' + link + '" target="_blank">' + link + '<\/a>';
}

document.write('www.stranka.cz'.replace(urlPattern, toLink));


-> vypíše hezký HTML odkaz :)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0