Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Meningkatkan Ungkapan Biasa Saya untuk Memadankan URL dengan Lebih Berkesan?

Bagaimanakah Saya Boleh Meningkatkan Ungkapan Biasa Saya untuk Memadankan URL dengan Lebih Berkesan?

DDD
DDDasal
2024-12-22 08:23:09659semak imbas

How Can I Improve My Regular Expression to Match URLs More Effectively?

Ungkapan Biasa yang Diperbaiki untuk URL Padanan

Apabila cuba mengesan dan menghuraikan URL daripada input pengguna, adalah penting untuk menggunakan ungkapan biasa yang berkesan. Dalam kes anda, semasa ungkapan semasa anda menangkap beberapa format URL, ia gagal mengambil kira URL yang tidak mempunyai skema protokol yang jelas, seperti www.google.com.

Ungkapan Biasa Disemak

Untuk menangani isu ini dan memastikan padanan URL yang komprehensif, pertimbangkan untuk menggunakan perkara biasa yang disemak berikut ungkapan:

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

Anatomi Regex

  • Sauh: Memastikan perlawanan bermula dan menamatkan keseluruhan rentetan.
  • Protokol (Pilihan): Menangkap pilihan Skim protokol "http" atau "https".
  • Domain: Padan dengan nama domain, termasuk subdomain dan domain peringkat atas.
  • Port : Menangkap nombor port pilihan (cth., ":8080").
  • Laluan: Menangkap sebarang maklumat laluan selepas domain (cth., "/index.html").
  • Pertanyaan: Menangkap parameter rentetan pertanyaan (cth., "?name=John").
  • Fragmen: Menangkap pengecam serpihan (cth., "#footer").

Ungkapan biasa yang disemak ini kurang terhad dan akan berjaya memadankan URL seperti www.google.com, serta URL yang mempunyai protokol eksplisit (mis., http://www.stackoverflow.com).

Contoh Pelaksanaan (JavaScript)

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

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meningkatkan Ungkapan Biasa Saya untuk Memadankan URL dengan Lebih Berkesan?. 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