نمط Regex للروابط URL
اعثر على عناوين الويب في النص بنمط قصير، وانظر أين يتوقف بالضبط قبل أن تضعه في شيفرتك.
نمط Regex للروابط URL
استخراج الروابط من السجلات أو ملفات المحادثات المصدَّرة أو النصوص المكشوطة مهمة لتعبير نمطي، وينبغي أن يكون النمط قصيرًا بما يكفي لقراءته. تفتح هذه الصفحة مختبِر التعابير النمطية بنمط URL (http/https) من مكتبة الأنماط، أي https?:\/\/[^\s/$.?#][^\s]*، مع الرايتين gi.
كيف يُقرأ النمط
| الجزء | المعنى |
|---|---|
https? | http، مع s اختيارية |
:\/\/ | النقطتان والشرطتان المائلتان، مُهرَّبة كي يعمل النمط أيضًا بين الشرطتين المائلتين في الشيفرة |
[^\s/$.?#] | أول محرف في اسم المضيف: أي محرف عدا المسافة والشرطة المائلة وعلامة الدولار والنقطة وعلامة الاستفهام وعلامة # |
[^\s]* | كل ما عدا ذلك حتى المسافة التالية |
gi | إيجاد كل رابط، بأي حالة أحرف |
ما يلتقطه وما يفوته
| النص | النتيجة |
|---|---|
https://logicutil.com/tool/regex-tester | العنوان كاملًا |
http://example.org/page?q=1#top | العنوان كاملًا، مع الاستعلام والجزء |
http://localhost:8080/x | العنوان كاملًا، مع المنفذ |
HTTPS://EXAMPLE.COM/X | مطابَق، بفضل الراية i |
https://例子.测试/路径 | مطابَق: تُحفظ النطاقات والمسارات غير اللاتينية |
Visit https://example.com. | https://example.com.، مع النقطة |
(https://example.com/a) | https://example.com/a)، مع القوس |
www.example.com | لا مطابقة: لا يوجد مخطط |
ftp://files.example.com | لا مطابقة: http وhttps فقط |
نسخة أدق
لاستبعاد علامات الترقيم في النهاية، اختم المطابقة بـ lookahead: https?:\/\/[^\s/$.?#][^\s]*?(?=[\].,;:!?)]*(?:\s|$)). يأخذ هذا النمط أقصر سلسلة لا يليها إلا علامات ترقيم ثم مسافة أو نهاية النص، فيعطي Visit https://example.com. النتيجة https://example.com، ويعطي (https://example.com/a) النتيجة https://example.com/a. والثمن أن الرابط الذي ينتهي فعلًا بقوس، كما في بعض عناوين Wikipedia، يفقده.
إيجاد الروابط ليس تحققًا منها
نمط كهذا يجيب عن سؤال «هل في هذا النص شيء يشبه الرابط؟»، لا عن سؤال «هل هذا عنوان يعمل؟». ولقيمة واحدة في JavaScript، new URL(value) أكثر صرامة: فهو يرمي استثناءً مع https:// بلا مضيف إطلاقًا. استخدم التعبير النمطي لإيجاد المرشّحين في النص، ثم اترك القرار لـ new URL() أو لخادمك.
صفحات ذات صلة
حوّل الروابط التي وجدتها إلى Markdown بـ [$&]($&) في صفحة البحث والاستبدال بـ Regex، وانظر كيف تتصرّف الرايات في مختبِر Regex لـ JavaScript. ولعناوين البريد الإلكتروني مزالقها الخاصة، ويتناولها دليل Regex للبريد الإلكتروني.