Ada Uri.IsWellFormedUriString
dan Uri.TryCreate
metode, tetapi mereka tampaknya kembali true
untuk jalur file dll.
Bagaimana cara saya memeriksa apakah suatu string adalah URL HTTP yang valid (tidak harus aktif) untuk keperluan validasi input?
Ada Uri.IsWellFormedUriString
dan Uri.TryCreate
metode, tetapi mereka tampaknya kembali true
untuk jalur file dll.
Bagaimana cara saya memeriksa apakah suatu string adalah URL HTTP yang valid (tidak harus aktif) untuk keperluan validasi input?
Jawaban:
Coba ini untuk memvalidasi URL HTTP (
uriName
adalah URI yang ingin Anda uji):Atau, jika Anda ingin menerima URL HTTP dan HTTPS sebagai valid (sesuai komentar J0e3gan):
sumber
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
Metode ini berfungsi baik di http dan https. Hanya satu baris :)
MSDN: IsWellFormedUriString
sumber
file://
atauldap://
. Solusi ini harus digabungkan dengan cek terhadap skema - misalnyaif (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
Pemakaian:
UPDATE: (satu baris kode) Terima kasih @GoClimbColorado
Pemakaian:
sumber
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
Semua jawaban di sini baik memungkinkan URL dengan skema lain (misalnya,
file://
,ftp://
) atau menolak URL terbaca-manusia yang tidak dimulai denganhttp://
atauhttps://
(misalnya,www.google.com
) yang tidak baik ketika berhadapan dengan input pengguna .Begini cara saya melakukannya:
Pemakaian:
Keluaran:
sumber
http://mooooooooo
, pada kenyataannya, Uri yang valid. Karenanya, Anda tidak dapat memeriksaUri.IsWellFormedUriString
setelah memasukkan "http: //" dan jika Anda memeriksanya sebelumnya, apa pun yang tidak memilikiScheme
akan ditolak. Mungkin yang bisa dilakukan adalah kita periksas.Contains('.')
saja.IsWellFormedUriString
sebelum menambahkanhttp://
, Anda akan akhirnya menolak hal-hal sepertigoogle.com
dan jika Anda menggunakannya setelah menambahkanhttp://
, itu akan tetap benar untukhttp://mooooooooo
. Itu sebabnya saya menyarankan untuk memeriksa apakah string tersebut berisi.
.Setelah
Uri.TryCreate
Anda dapat memeriksaUri.Scheme
untuk melihat apakah itu HTTP.sumber
Coba itu:
Ini akan menerima URL seperti itu:
sumber
Ini akan mengembalikan bool:
sumber
Inilah
url
string yang harus Anda uji.sumber
sumber