URL'yi doğrulamak için Regex - HTTP kontrol değil mi?

4 Cevap php

Ben böyle bir şey ile bir web adresi doğrulamak için burada soru tonns olduğunu biliyorum

/^[a-zA-Z]+[:\/\/]+[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i

Tek sorun değil herkes http:// kullanır ya da öylesine i preg_match() kullanmak için bir yol bulmak istiyordum ama http kontrol önce değil ne gelir, bir {[(2)] a} ama daha gerçekten ben bu modifiye ama sonra url reddeder, önemi o does [(0)]} içinde {yok:

/^[A-Za-z0-9\-_]+\\.+[A-Za-z0-9\.\/%&=\?\-_]+$/i

Ben daha çok bu koşullar üzerinde doğrulamak için umut oldu

  • Bu http:// veya www varsa o zaman sadece bu görmezden
  • . Uzatma artık 9 daha sonra reddetmek daha fazla ise
  • O no Nokta içeriyorsa

Kimsenin bir fikri var, teşekkürler :)

4 Cevap

herkes http:// kullanır

Onlar gerekir. Bir düzeni olmadan sadece bir URL değil, ve bunu atlayarak tuhaf sorunlara neden olabilir. Örneğin:

www.example.com:8080/file.txt

Bu var olmayan düzeni ile geçerli bir URL www.example.com:.

Eğer normal bir düzeni http:, otomatik ekleme deneyebilirsiniz olmalı emin değilseniz http:// https?: ile başlamayan herhangi bir URL 'düzeltmek' için , doğrulama önce. Ama uzun vadede / return'in schemeless URL'leri tutmak / izin vermemelidir.

Bu arada kullandığınız geçerli regex resmi URI sözdizimine göre doğru uzun bir yol (RFC 3986 bakınız). Bu IRI Unicode karakterleri söz değil, çok geçerli bir URI karakter vermemek olacaktır. Eğer uygun bir doğrulama istiyorsanız gerçek bir URL-ayrıştırıcı kullanmak gerekir; Sadece bariz sorunlar için hızlı bir kontrol istiyorsanız çok daha müsamahakar bir şey kullanmak gerekir. Örneğin, sadece uzayda ve " gibi kategorik-geçersiz karakter olmaması için kontrol.

Neden varsa sadece http:// kaldırmak için regexp önce bir sahne yok? Aynı www için de geçerli olacak. Bu sizin hayat biraz daha kolay yapabilir.

/^(http\://|www\.)/

/^.+?\.\S{0,9}\./

/\./

Onlar senin kurşun puan için çalışması gerekir?