ورقة غش التعبيرات النمطية والأنماط الشائعة
التعبيرات النمطية، أو 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] يطابق أي حرف |
المحددات الكمية
| Pattern | Meaning | Example |
|---|---|---|
| * | صفر مرة أو أكثر | 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 أرقام |
المرتكزات والحدود
| Pattern | Meaning | Example |
|---|---|---|
| ^ | بداية السلسلة أو السطر | ^Hello يطابق Hello في البداية |
| $ | نهاية السلسلة أو السطر | world$ يطابق world في النهاية |
| \b | حد كلمة | \bcat\b يطابق cat المنفردة |
| \B | غير حد كلمة | \Bcat يطابق scattered |
التجميع والتبديل
| Pattern | Meaning | Example |
|---|---|---|
| (abc) | مجموعة التقاط | (ab)+ يطابق abab |
| (?:abc) | مجموعة غير ملتقطة | (?:ab)+ يطابق abab |
| a|b | تبديل (أو) | cat|dog يطابق cat أو dog |
| \1 | مرجع خلفي للمجموعة 1 | (\w)\1 يطابق aa و bb |
| مجموعة التقاط مسماة | يُشار إليها بـ 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).
تقنيات متقدمة
النظر الأمامي والخلفي
تتيح لك تأكيدات النظر الأمامي والخلفي المطابقة فقط عندما يتبع النمط (أو يسبقه) نمط آخر (أو لا يتبعه/يسبقه)، دون تضمين النص المحيط في نتيجة المطابقة.
- نظر أمامي إيجابي (?=pattern): يطابق فقط عندما يتبع النمط. مثال: \d(?=px) يطابق الأرقام التي تسبق "px" فقط.
- نظر أمامي سلبي (?!pattern): يطابق فقط عندما لا يتبع النمط. مثال: \d(?!px) يطابق الأرقام التي لا تسبق "px".
- <=pattern): يطابق فقط عندما يسبق النمط. مثال: (?<=\$)\d+ يطابق الأرقام التي تسبقها علامة الدولار.
المطابقة الجشعة والكسولة
<.*>bold<.*?>".
نصائح أداء التعبيرات النمطية
- استخدم المجموعات غير الملتقطة (?:) عندما لا تحتاج إلى استخراج محتويات المجموعة المطابقة
- استخدم المحددات الكمية التملكية أو المجموعات الذرية عند الدعم لتجنب التراجع المفرط
- استخدم فئات أحرف محددة بدلاً من نقطة الحرف العريضة
- ثبّت نمطك بـ ^ و $ عندما تحتاج إلى مطابقة السلسلة بأكملها
- قم بتجميع أنماط التعبيرات النمطية مسبقًا عند إعادة استخدامها في الحلقات
- استخدم حدود الكلمات \b بدلاً من ^ و $ عند البحث في نص أكبر
اختبار وتصحيح التعبيرات النمطية
اختبر أنماط التعبيرات النمطية دائمًا بمدخلات حقيقية قبل النشر. استخدم مختبر تعبيرات نمطية تفاعلي يسلط الضوء على المطابقات في الوقت الفعلي ويشرح كل جزء من النمط. هذا يساعدك في التقاط الحالات الحدية وفهم سبب مطابقة النمط أو عدم مطابقته لمدخل معين. جرب مختبر التعبيرات النمطية المجاني الخاص بنا لبناء واختبار أنماطك بشكل تفاعلي.
استخدم أدواتنا المجانية لبناء واختبار وتصحيح أنماط التعبيرات النمطية الخاصة بك.
جرب مختبر التعبيرات النمطيةورقة غش التعبيرات النمطيةالأسئلة الشائعة
ما الفرق بين المطابقة الجشعة والكسولة؟
المحددات الكمية الجشعة تطابق أكبر قدر ممكن من النص، بينما المحددات الكسولة تطابق أقل قدر ممكن. إضافة علامة استفهام بعد المحدد الكمي تجعله كسولاً. على سبيل المثال، .* يطابق أطول سلسلة ممكنة، بينما .*? يطابق أقصر سلسلة.
هل التعبيرات النمطية متشابهة في جميع لغات البرمجة؟
لا، تختلف تطبيقات التعبيرات النمطية بين اللغات. معظمها تدعم صيغة 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.