URL Regex Deseni
Yukarıdaki desen, HTTP ve HTTPS URL’leriyle, yollar, sorgu dizeleri ve parçalar dahil olmak üzere eşleşir. ftp:// şemalarını ve protokolü olmayan çıplak stringleri reddeder. Test stringlerinden https://example.com, devbento araç URL’si, sorgu parametreli localhost API’si ve parçalı alt alan URL’si ile eşleşir. ftp://not-http.com veya düz metin stringi ile eşleşmez.
Desen Ayrıştırması
| Bölüm | Desen | Eşleştiği şey |
|---|---|---|
| Protokol | https?:\/\/ | http:// veya https:// |
| Ana bilgisayar | [\w\-]+(\.[\w\-]+)+ | En az bir noktalı alan adı |
| Yol, sorgu, parça | ([\w.,@?^=%&:/~+#\-]*[\w@?^=%&/~+#\-])? | İsteğe bağlı yol ve sorgu dizesi |
Doğrulama Alternatifi Olarak URL Yapıcısı
JavaScript için new URL(input), bir stringin geçerli bir mutlak URL olup olmadığını kontrol etmenin en güvenilir yoludur:
function isValidUrl(str) {
try {
const url = new URL(str);
return url.protocol === 'http:' || url.protocol === 'https:';
} catch {
return false;
}
}
Bu, regex’in işlemediği kenar durumlarını halleder: IPv6 adresleri (http://[::1]:8080/), Punycode normalleştirmesinden sonra uluslararası alan adları ve yollarda yüzde kodlu karakterler.
Desenin Kapsamadığı Kenar Durumları
Kimlik doğrulama bilgileri içeren URL’ler (http://user:pass@example.com), ana bilgisayar ayrıştırmasını karıştırdığı için eşleşmez. IPv6 adresli URL’ler (http://[2001:db8::1]/) önemli ölçüde karmaşıklık ekleyen parantez işleme gerektirir. Unicode alan adları (https://münchen.de) desenin eşleşmesi için önce Punycode’a dönüştürülmelidir.
Metinden URL Çıkarma
Bir URL regex’inin en pratik kullanımı, günlüklerden, işaretlemeden veya düz metinden bağlantılar çıkarmaktır. Bunu g bayrağıyla yaparken, işaretleme bağlantı sözdiziminin ([label](https://url)) kapanış ) karakterini de eşleştireceğini unutmayın.