"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني تحسين تعبيراتي العادية لمطابقة عناوين URL بشكل أكثر فعالية؟

كيف يمكنني تحسين تعبيراتي العادية لمطابقة عناوين URL بشكل أكثر فعالية؟

تم النشر بتاريخ 2024-12-14
تصفح:244

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

تحسين التعبير العادي لمطابقة عناوين URL

عند محاولة اكتشاف عناوين URL وتحليلها من إدخال المستخدم، من الضروري استخدام تعبير عادي فعال. في حالتك، بينما يلتقط تعبيرك الحالي بعض تنسيقات عناوين URL، فإنه يفشل في مراعاة عناوين URL التي تفتقر إلى نظام بروتوكول صريح، مثل www.google.com.

التعبير العادي المنقح

لمعالجة هذه المشكلة والتأكد من المطابقة الشاملة لعنوان URL، فكر في استخدام النسخة العادية المنقحة التالية التعبير:

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

تشريح Regex

  • المراسي: يضمن بدء المباراة و ينهي السلسلة بأكملها.
  • البروتوكول (اختياري) : يلتقط بروتوكول "http" أو "https" الاختياري المخطط.
  • المجال: يطابق اسم المجال، بما في ذلك النطاقات الفرعية ونطاق المستوى الأعلى.
  • المنفذ: يلتقط رقم المنفذ الاختياري (على سبيل المثال. , ":8080").
  • المسار: يلتقط أي معلومات مسار بعد المجال (على سبيل المثال، "/index.html").
  • Query: يلتقط معلمات سلسلة الاستعلام (على سبيل المثال، "?name=John").
  • جزء: يلتقط معرف الجزء (على سبيل المثال، "#footer").
  • هذا التعبير العادي المنقح أقل تقييدًا وسيعمل بنجاح مطابقة عناوين URL مثل www.google.com، بالإضافة إلى تلك التي تحتوي على بروتوكولات صريحة (على سبيل المثال، http://www.stackoverflow.com).

مثال للتنفيذ (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'; إذا (url.match(regex)) { console.log("تم مطابقة عنوان URL بنجاح."); } آخر { console.log("عنوان URL غير متطابق.");

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3