Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Teguh untuk Memadankan URL dengan dan tanpa Awalan Protokol?

Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Teguh untuk Memadankan URL dengan dan tanpa Awalan Protokol?

Barbara Streisand
Barbara Streisandasal
2024-12-24 05:54:17973semak imbas

How Can I Create Robust Regular Expressions to Match URLs with and without Protocol Prefixes?

URL Padanan: Pendekatan Ungkapan Biasa Komprehensif

Apabila mengekstrak URL daripada input, adalah penting untuk mempunyai ungkapan biasa yang mantap yang boleh mengendalikan pelbagai senario. Dalam kes ini, ungkapan biasa yang disediakan gagal padan dengan URL tanpa awalan protokol "http" atau "https". Untuk menangani cabaran ini, kami mencadangkan dua ungkapan biasa alternatif:

Untuk URL yang Memerlukan Protokol HTTP/HTTPS:

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

Untuk URL Tanpa HTTP /Keperluan Protokol HTTPS:

[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)

Ungkapan biasa ini menangkap URL dengan berkesan atau tanpa awalan protokol. Untuk tujuan percubaan, anda boleh menguji ungkapan ini di http://regexr.com?37i6s (dengan awalan protokol) dan http://regexr.com/3e6m0 (tanpa awalan protokol).

Di bawah ialah contoh Pelaksanaan JavaScript:

const expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi;
const regex = new RegExp(expression);
const t = 'www.google.com';

if (t.match(regex)) {
  alert("Successful match");
} else {
  alert("No match");
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Ungkapan Biasa Teguh untuk Memadankan URL dengan dan tanpa Awalan Protokol?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn