Tarayıcınız güncel değil

Bu siteyi görüntülemek için tarayıcınızın veya cihazınızın işletim sisteminin güncellenmesi gerekiyor.

Your browser is out of date. Please update iOS or your browser to view this site.

تخطي إلى المحتوى الرئيسي
Gizke.com
المدونة

أداة اختبار Regex

يعمل على جهازك. لا يُرسل أي شيء.

الأعلام

أنماط شائعة

نص الاختبار

لم يتم العثور على تطابقات

الشرح

اكتب نمطًا أعلاه لرؤية شرح لما يفعله كل جزء

اختبر واشرح وصحّح التعبيرات النمطية في JavaScript مع تمييز التطابقات مباشرة، كل ذلك داخل متصفحك.

التعبير النمطي (regex) هو نمط يُستخدم لمطابقة النص أو إيجاده أو استبداله - وهو نفس الأداة الأساسية التي تُشغّل البحث والاستبدال في محرّرات الأكواد، والتحقق من صحة النماذج، وتحليل السجلّات. تُشغّل أداة الاختبار هذه محرّك التعبيرات النمطية الأصلي في JavaScript مباشرة داخل متصفحك: اكتب نمطًا ونصًا للاختبار، فتقوم بتمييز كل تطابق، وتفكيك مجموعات الالتقاط، ومعاينة الاستبدالات، وشرح ما يفعله كل جزء من النمط بلغة بسيطة. لا شيء تكتبه يُرفع إلى أي مكان أبدًا.

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

ما نوع Regex الذي تستخدمه هذه الأداة؟
محرّك التعبيرات النمطية المدمج في JavaScript (المحرّك الذي يقف خلف RegExp وString.prototype.match/replace)، لأن كل شيء هنا يعمل من جانب العميل في متصفحك بدلًا من خادم. وهو قريب جدًا من PCRE لكن له بعض الاختلافات - فعلى سبيل المثال، يعتمد دعم lookbehind على إصدار المحرّك، وتستخدم المجموعات المسمّاة صيغة (?<اسم>...).
لماذا يتطابق نمطي مرة واحدة فقط؟
بشكل افتراضي، وبدون العلم g (الشامل)، يتوقف التعبير النمطي بعد أول تطابق - وهذا يعكس السلوك الفعلي لـ RegExp.exec() وString.match() في JavaScript. فعّل العلم g أعلاه لإيجاد كل التطابقات في نص الاختبار بدلًا من التطابق الأول فقط.
ما الفرق بين (...) و(?:...)؟
كلاهما يجمّع أجزاء من النمط معًا، لكن فقط (...) - مجموعة التقاط - يحفظ ما طابقه لتتمكن من الرجوع إليه لاحقًا (كـ $1، $2، ... في الاستبدال، أو في قائمة مجموعات التطابق). أمّا (?:...) فهي مجموعة بلا التقاط: تُجمّع وتُطبّق المحدّدات الكمية دون الاحتفاظ بالتطابق، وهذا مفيد عندما تحتاج إلى التجميع دون الاهتمام بالنص الملتقَط.
كيف تعمل المجموعات المسمّاة واستبدالات $<اسم>؟
اكتب (?<اسم>...) بدلًا من (...) لالتقاط مجموعة تحت اسم بدلًا من رقم فقط. في وضع الاستبدال، أشر إليها في نص الاستبدال كـ $<اسم> - على سبيل المثال، (?<سنة>\d{4})-(?<شهر>\d{2}) عند استبدالها بـ $<شهر>/$<سنة> تُعيد ترتيب تاريخ دون الحاجة لتذكّر أرقام المجموعات.
ما الفرق بين المحدِّد الجشع (greedy) والمحدِّد الكسول (lazy)، مثل + مقابل +؟؟
يطابق المحدِّد الجشع (+، *، {2,4}) أكبر قدر ممكن من النص، ثم يتراجع فقط إذا لزم الأمر للسماح لبقية النمط بالمطابقة. أما المحدِّد الكسول - نفس الرمز متبوعًا بـ؟ - فيطابق أقل قدر ممكن بدلاً من ذلك، ويتوسع حرفًا واحدًا في كل مرة فقط عند الحاجة. على سبيل المثال، يطابق <.+> مقابل <a><b> بجشع كامل <a><b>، بينما يطابق <.+?> بكسل فقط <a>.
ماذا يتحقق النظر الأمامي والخلفي (lookahead/lookbehind) بالفعل إذا لم يستهلكا أي أحرف؟
يتحققان مما إذا كان نمط ما يظهر مباشرة قبل أو بعد الموضع الحالي دون تضمينه في المطابقة نفسها - لذا يتحقق (?=...) و(?<=...) للأمام/للخلف من وجود شيء يجب أن يكون موجودًا، بينما يتحقق (?!...) و(?<!...) من أنه يجب ألا يكون موجودًا. لهذا يمكنك استخدام \d+(?=px) لمطابقة رقم فقط عندما يتبعه 'px'، بينما لا تظهر 'px' نفسها أبدًا في النص المطابق.
للمطورين: افتح هذه الصفحة مع معلمتي `q` (النمط) و `text` (نص الاختبار) في الرابط - مثل gizke.com/regex?q=\d+&text=There are 42 apples - وسيتم تعبئة كلتيهما تلقائيًا. لن يحتاج معظم الزوار إلى هذا؛ فهو مخصص للربط المباشر بمثال جاهز للاستخدام.

شارك هذه الأداة

المدونةمن نحناتصل بناشروط الاستخدامسياسة الخصوصية