اختبار التعبيرات النمطية
اختبر تعبيرات JavaScript العادية محليًا باستخدام علامات g/i/m/s/u/y، وعدد التطابقات، ومجموعات الالتقاط والمسمى، ونطاقات أعمدة الأسطر، ومعاينة الاستبدال الأصلية.
/
/g
نص الاختبار
الأحرف
0 / 50,000
نتائج المطابقة
أدخل نمطًا لبدء المطابقة
نص الاستبدال
الأحرف
0 / 50,000
معاينة الاستبدال
بداية سريعة
سيناريوهات شائعة
استخراج البيانات
استخدم (\d{4}-\d{2}-\d{2}) لاستخراج التواريخ، واستخدم ([\w.]+@[\w.]+) لاستخراج عناوين البريد الإلكتروني
التحقق من التنسيق
اكتب regex، والصق عدة عينات، ثم تحقق بسرعة مما إذا كان النمط يطابق التنسيق المستهدف بدقة
الاستبدال الدفعي
استخدم مجموعات الالتقاط لإعادة ترتيب المحتوى. على سبيل المثال، حوّل "الاسم الأول الاسم الأخير" إلى "الاسم الأخير، الاسم الأول" باستخدام النمط (\S+)\s+(\S+) والاستبدال $2, $1
المجموعات المسماة
استخدم (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) لاستخراج التواريخ، ثم استخدم $<year>/$<month>/$<day> لإعادة بنائها
تعلّم regex
جرّب أنماطًا مختلفة وراقب سلوك المطابقة لفهم المحددات والمراسي وفئات الأحرف بصريًا
معالجة الأسطر المتعددة
فعّل العلامة m لكي يطابق ^ و $ كل سطر، وهذا مفيد للسجلات والكود وملفات الإعداد
نصائح الاستخدام
القيود والتوافقية
الخصوصية والأمان
أسئلة شائعة
التعبير العادي (regex) هو لغة نمطية لوصف بنيات النص. فكر في الأمر على أنه "بحث متقدم" — بدلاً من البحث عن كلمة ثابتة، فإنك تبحث عن كل شيء يطابق قاعدة.\n\nعلى سبيل المثال، \\d{4}-\\d{2}-\\d{2} يطابق جميع التواريخ بتنسيق YYYY-MM-DD، و [\\w.]+@[\\w.]+ يطابق عناوين البريد الإلكتروني. يُستخدم Regex على نطاق واسع في: البحث عن النص واستخراجه (العثور على رموز الخطأ في السجلات)، والتحقق من صحة التنسيق (التحقق من أرقام الهواتف)، واستبدال الدُفعات (تحويل تنسيقات التاريخ).\n\n تقريبًا كل لغة برمجة (JavaScript، وPython، وJava، وGo، وما إلى ذلك) والعديد من الأدوات (VS Code، وgrep، وsed) تدعم regex بتركيب جملة مماثل في الغالب. تستخدم هذه الأداة محرك JavaScript RegExp للاختبار والتعلم السريع عبر الإنترنت.
يقوم JavaScript regex بإرجاع المطابقة الأولى فقط بشكل افتراضي - وهذا هو سلوك مواصفات اللغة، وليس قيودًا على الأداة. انقر فوق الزر g في شريط العلامات لتمكين البحث الشامل ورؤية جميع التطابقات.\n\nلاحظ التفاعل بين g وy: يقوم g بمسح النص بأكمله من البداية إلى النهاية، بينما y (مثبت) يتطلب أن يبدأ كل تطابق من حيث انتهت المباراة السابقة تمامًا - إذا كانت هناك أحرف فجوات بين التطابقات، فإن y يتوقف عند الفجوة الأولى. عادةً ما يكفي تمكين g بدون y.
الأسباب الشائعة أربعة: 1. أقواس غير مكتملة: كل ( يحتاج إلى ) مطابق، وكل [ يحتاج إلى ] مطابق. حتى لو أكملها المحرر تلقائيًا، تختبر الأداة النمط كما هو مُدخل. 2. محددات كمية في موضع خاطئ: يجب أن تأتي * و+ و? و{n} بعد جزء يمكن تكراره. التركيبات مثل *+ أو ?* غير صالحة؛ أما المحددات غير الجشعة فتكتب مثل *? أو +?. 3. هروب غير مكتمل: وجود \ وحدها في نهاية النمط غير صالح؛ يجب أن تهرب حرفًا محددًا مثل \d أو \n أو \\. 4. خصائص Unicode بدون العلم u: الصيغ مثل \p{L} و\p{Script=Han} تحتاج إلى تفعيل u في هذه الأداة.
هذه مراجع استبدال في JavaScript String.prototype.replace(): - $1 و$2 ... $99: محتوى مجموعات الالتقاط من الأولى حتى التاسعة والتسعين. - $&: النص المطابق بالكامل. - $`: النص قبل المطابقة. - $': النص بعد المطابقة. - $<name>: محتوى مجموعة الالتقاط المسماة (?<name>...). مثلًا، إذا طابق النمط (\w+)\s(\w+) النص "hello world"، فإن الاستبدال $2-$1 يعطي "world-hello". لإدراج الرمز $ نفسه في نص الاستبدال، اكتب $$.
تختلف محركات regex بين اللغات في ثلاثة مواضع رئيسية: 1. دعم الصياغة: JavaScript لا يدعم recursion في PCRE مثل (?R)، ولا الفروع الشرطية (?(cond)yes|no)، ولا المجموعات الذرية (?>...). وحدة re في Python لا تدعمها أيضًا، بينما تدعم وحدة regex الخارجية بعضها. Java يدعم المجموعات الذرية لكنه لا يدعم recursion. 2. Unicode: في JavaScript، يطابق \w غالبًا الحروف اللاتينية الأساسية والأرقام والشرطة السفلية. تفعيل u لا يجعله يطابق الأحرف الصينية تلقائيًا. استخدم property escapes مثل \p{L} مع u لحروف Unicode. 3. الأسطر الجديدة: في Python لا يطابق . الرمز \n افتراضيًا، كما في JavaScript. أما Pattern.DOTALL في Java فيشبه العلم s في JavaScript. استخدم هذه الأداة للتحقق السريع من JavaScript RegExp، ثم أكد النتيجة بمحرك اللغة المستهدفة.