ToolHub
View All Posts

ورقة غش التعبيرات النمطية والأنماط الشائعة

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

ورقة غش صيغة التعبيرات النمطية الأساسية

فئات الأحرف

النمطالمعنىمثال
.أي حرف باستثناء السطر الجديدa.c يطابق abc و a1c و a c
\dأي رقم (0-9)\d\d يطابق 42
\Dأي غير رقم\D يطابق a و ! و مسافة
\wحرف كلمة (a-z، A-Z، 0-9، _)\w+ يطابق hello_123
\Wحرف غير كلمة\W يطابق @ و # و مسافة
\sحرف مسافة بيضاء (مسافة، تبويب، سطر جديد)a\sb يطابق a b
\Sحرف غير مسافة بيضاء\S+ يطابق hello
[abc]أي حرف في المجموعة[aeiou] يطابق حروف العلة
[^abc]أي حرف ليس في المجموعة[^0-9] يطابق غير الأرقام
[a-z]نطاق أحرف[A-Za-z] يطابق أي حرف

المحددات الكمية

PatternMeaningExample
*صفر مرة أو أكثرab*c يطابق ac و abc و abbc
+مرة واحدة أو أكثرab+c يطابق abc و abbc
?صفر أو مرة واحدةcolou?r يطابق color و colour
{n}بالضبط n مرات\d{4} يطابق 4 أرقام
{n,}n مرات أو أكثر\d{2,} يطابق رقمين فأكثر
{n,m}من n إلى m مرة\d{3,5} يطابق 3-5 أرقام

المرتكزات والحدود

PatternMeaningExample
^بداية السلسلة أو السطر^Hello يطابق Hello في البداية
$نهاية السلسلة أو السطرworld$ يطابق world في النهاية
\bحد كلمة\bcat\b يطابق cat المنفردة
\Bغير حد كلمة\Bcat يطابق scattered

التجميع والتبديل

PatternMeaningExample
(abc)مجموعة التقاط(ab)+ يطابق abab
(?:abc)مجموعة غير ملتقطة(?:ab)+ يطابق abab
a|bتبديل (أو)cat|dog يطابق cat أو dog
\1مرجع خلفي للمجموعة 1(\w)\1 يطابق aa و bb
abc)مجموعة التقاط مسماةيُشار إليها بـ name

أنماط التعبيرات النمطية الشائعة

فيما يلي أنماط التعبيرات النمطية الأكثر استخدامًا في تطوير الويب والتحقق من البيانات:

التحقق من البريد الإلكتروني

تعبير نمطي عملي للبريد الإلكتروني يلتقط معظم العناوين غير الصالحة دون أن يكون صارمًا جدًا: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ . يتحقق هذا النمط من بنية البريد الإلكتروني الأساسية مع السماح بالأحرف الشائعة في الجزء المحلي ويتطلب اسم نطاق صالح مع TLD مكون من حرفين على الأقل.

التحقق من URL

مطابقة عناوين URL HTTP و HTTPS: ^https?:\/\/(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}(\/[^\s]*)?$ . يطابق هذا النمط عناوين URL مع بادئة www اختيارية واسم نطاق ومسار اختياري.

رقم الهاتف (الولايات المتحدة)

تنسيقات مختلفة لأرقام الهواتف الأمريكية: ^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ . يعالج هذا النمط تنسيقات مثل (555) 123-4567 و 555-123-4567 و 5551234567.

عنوان IP (IPv4)

التحقق من عنوان IPv4: ^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$ . يضمن هذا النمط أن كل ثمانية بتات بين 0 و 255.

التاريخ (YYYY-MM-DD)

تنسيق تاريخ ISO: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ . يتحقق هذا النمط من بنية التنسيق لكنه لا يتحقق من صحة التاريخ الفعلية لكل شهر.

رمز اللون السداسي عشر

مطابقة ألوان CSS السداسية عشر: ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ . يطابق هذا النمط التنسيق المختصر المكون من 3 أرقام (#fff) والتنسيق الكامل المكون من 6 أرقام (#ffffff).

تقنيات متقدمة

النظر الأمامي والخلفي

تتيح لك تأكيدات النظر الأمامي والخلفي المطابقة فقط عندما يتبع النمط (أو يسبقه) نمط آخر (أو لا يتبعه/يسبقه)، دون تضمين النص المحيط في نتيجة المطابقة.

المطابقة الجشعة والكسولة

<.*>bold<.*?>".

نصيحة احترافية: عند استخراج المحتوى بين المحددات مثل وسوم HTML أو علامات الاقتباس، استخدم دائمًا المحددات الكسولة لتجنب مطابقة نص أكثر من اللازم. المطابقة الجشعة هي المصدر الأكثر شيوعًا لأخطاء التعبيرات النمطية.

نصائح أداء التعبيرات النمطية

اختبار وتصحيح التعبيرات النمطية

اختبر أنماط التعبيرات النمطية دائمًا بمدخلات حقيقية قبل النشر. استخدم مختبر تعبيرات نمطية تفاعلي يسلط الضوء على المطابقات في الوقت الفعلي ويشرح كل جزء من النمط. هذا يساعدك في التقاط الحالات الحدية وفهم سبب مطابقة النمط أو عدم مطابقته لمدخل معين. جرب مختبر التعبيرات النمطية المجاني الخاص بنا لبناء واختبار أنماطك بشكل تفاعلي.

استخدم أدواتنا المجانية لبناء واختبار وتصحيح أنماط التعبيرات النمطية الخاصة بك.

جرب مختبر التعبيرات النمطيةورقة غش التعبيرات النمطية

الأسئلة الشائعة

ما الفرق بين المطابقة الجشعة والكسولة؟

المحددات الكمية الجشعة تطابق أكبر قدر ممكن من النص، بينما المحددات الكسولة تطابق أقل قدر ممكن. إضافة علامة استفهام بعد المحدد الكمي تجعله كسولاً. على سبيل المثال، .* يطابق أطول سلسلة ممكنة، بينما .*? يطابق أقصر سلسلة.

هل التعبيرات النمطية متشابهة في جميع لغات البرمجة؟

لا، تختلف تطبيقات التعبيرات النمطية بين اللغات. معظمها تدعم صيغة POSIX الأساسية، لكن الميزات المتقدمة مثل النظر الخلفي والمجموعات المسماة ودعم Unicode تختلف. JavaScript كانت محدودة تاريخيًا في دعم التعبيرات النمطية لكنها أضافت العديد من الميزات في السنوات الأخيرة.

هل يمكن للتعبيرات النمطية تحليل HTML أو XML؟

لا، لا يمكن للتعبيرات النمطية تحليل HTML أو XML بشكل موثوق لأنهما لغات متداخلة خالية من السياق. التعبيرات النمطية ليس لديها مفهوم لعمق التداخل أو الوسوم المتوازنة. استخدم محلل HTML أو XML مناسبًا. يمكن للتعبيرات النمطية استخراج أنماط بسيطة من HTML لكنها تفشل في الهياكل المعقدة.

ما هو النظر الأمامي والخلفي في التعبيرات النمطية؟

<=pattern) هو نظر خلفي إيجابي، يطابق إذا كان النمط يسبق. الإصدارات السلبية تستخدم ! بدلاً من =.

كيفية جعل التعبير النمطي غير حساس لحالة الأحرف؟

إضافة علامة i بعد المحدد الختامي تجعل النمط بأكمله غير حساس لحالة الأحرف. في JavaScript، استخدم /pattern/i. في Python، استخدم re.IGNORECASE أو re.I كعلامة. يمكنك أيضًا استخدام (?i) بشكل مضمن لجعل أجزاء محددة غير حساسة لحالة الأحرف.

ToolHub's collection of 300+ free online tools including regex tester, cheat sheets, and more — no sign-up required.