النص
Regex Tester / Find & Replace
اختبار التعبيرات النمطية على نص حقيقي: تمييز التطابقات وتحليل مجموعات الالتقاط، أو استبدال التطابقات الموجودة بنص جديد.
A regular expression (regex) is a compact language for describing patterns in text — for searching, validating a format, or replacing matches. This tool highlights matches in real text as you type the pattern, breaks out capture groups, and supports a find-and-replace mode.
How to use it
- Search: enter a pattern and some test text — every match is highlighted and capture groups are broken out separately.
- Replace: switch to Replace mode, provide a replacement template (referencing groups with $1, $2), and see the result instantly.
- Flags (g, i, m, s) toggle independently and immediately affect how many matches are found and how.
Common uses
- Building and debugging a regex before pasting it into code — you see the result without running the program.
- Bulk find-and-replace against a pattern (e.g. reformatting phone numbers or dates).
- Validating an input format (email, card number, slug) against real examples.
Things to keep in mind
Greedy quantifiers (*, +) grab as many characters as possible — add ? for the minimal match instead (e.g. .*? instead of .*).
Syntax varies slightly between languages — an expression that works here (a JavaScript engine) may need adjusting for PCRE, .NET, or Python.
مقالة عن هذه الأداة: التعبيرات النمطية: الأساسيات وفخّ المطابقة الجشعة
الأسئلة الشائعة
ما محرك التعبيرات النمطية المستخدم في الأداة؟
تستخدم الأداة محرك JavaScript للتعبيرات النمطية وليس PCRE، لذا بعض الصياغات الخاصة بـ PCRE فقط مثل بعض أنماط النظرة الخلفية المتقدمة أو recursive patterns قد لا تعمل هنا.
ما الفرق بين وضعي الاختبار والاستبدال، وماذا عن الأعلام والمجموعات؟
وضع الاختبار يعرض التطابقات ومجموعات الالتقاط بما فيها المجموعات المسمّاة دون تعديل النص، بينما وضع الاستبدال يستبدل التطابقات بنص جديد باستخدام $1 وغيرها؛ كما تدعم الأداة الأعلام القياسية مثل g وi وm، وتفرّق بين الكمّيات الجشعة (greedy) والكسولة (lazy) مثل * وَ*؟.
هل النص والتعبير النمطي اللذان أدخلهما يُرسلان إلى خادم؟
لا، الاختبار والاستبدال يتمّان بالكامل داخل متصفحك عبر JavaScript، دون إرسال أي بيانات إلى خادم.
ما هو التراجع الكارثي (catastrophic backtracking)؟
المكمّمات المتداخلة مثل (a+)+ قد تجبر المحرك، على مدخلات معينة، على تجربة عدد أُسّي من التوليفات — فتتجمد الصفحة أو السكربت على تعبير يبدو بسيطًا. هذه ثغرة حقيقية (ReDoS)، لذا يجدر اختبار المكمّمات المتداخلة المعقدة على سلاسل طويلة شبه متطابقة.
لماذا يعمل تعبيري في لغة برمجة، ولا يعمل في لغة أخرى؟
صياغة التعبيرات النمطية غير موحّدة تمامًا: PCRE (المستخدمة في PHP ولغات أخرى كثيرة) وَ.NET وَPython re وَJavaScript لكل منها اختلافات طفيفة في دعم بعض البنى (مثل النظرة الخلفية أو المجموعات المسمّاة) — تعبير كُتب لمحرك معين لا يعمل بالضرورة دون تعديل في محرك آخر.