أداة اختبار وتحقق مجانية للتعبيرات العادية (Regex) على الإنترنت - اختبر الأنماط فوريًا
اختبر وتحقق من صحة التعبيرات العادية على الإنترنت مع تمييز فوري. أداة اختبار مجانية للتعبيرات العادية مع التحقق من الصياغة، ونتائج المطابقة، وإمكانية الحفظ. اختبر التعبيرات العادية الآن!
اختبار نمط التعبير العادي
نتائج المطابقة
أدخل نمطًا ونص اختبار لرؤية النتائج
حفظ النمط
نتائج المطابقة
أدخل نمطًا ونص اختبار لرؤية النتائج
الأنماط المحفوظة
لا توجد أنماط محفوظة حتى الآن
دليل رموز التعبير العادي
.يطابق أي حرف باستثناء سطر جديد\dيطابق أي رقم (0-9)\Dيطابق أي غير رقم\wيطابق أي حرف كلمة (a-z, A-Z, 0-9, _)\Wيطابق أي حرف غير كلمة\sيطابق أي حرف مسافة\Sيطابق أي حرف غير مسافة^يطابق بداية السطر$يطابق نهاية السطر*يطابق 0 أو أكثر من الحرف السابق+يطابق 1 أو أكثر من الحرف السابق?يطابق 0 أو 1 من الحرف السابق{n}يطابق بالضبط n من الحرف السابق{n,}يطابق على الأقل n من الحرف السابق{n,m}يطابق بين n و m من الحرف السابق[abc]يطابق أي حرف واحد من الأحرف في الأقواس[^abc]يطابق أي حرف غير موجود في الأقواس(abc)يجمع رموزًا متعددة معًا ويلتقط المطابقةa|bيطابق إما a أو b\bيطابق موضع حد كلمةالتوثيق
ما هو مختبر التعبيرات النمطية
مختبر التعبيرات النمطية أداة تتحقق من تعبير نمطي مقابل جزء من النص وتعرض ما يطابقه. التعبير النمطي، المعروف اختصارًا باسم Regex، هو تسلسل قصير من المحارف يصف نمطًا في النص، مثل «ثلاثة أرقام متتالية» أو «أي كلمة تبدأ بحرف كبير». يتيح مدقّق التعبيرات النمطية هذا للشخص كتابة نمط وبعض نص الاختبار، ثم رؤية التطابقات مميّزة فورًا، من دون كتابة أي شيفرة.
تُستخدم التعبيرات النمطية في لغات برمجة كثيرة للبحث في النصوص، والتحقق من أن إدخال المستخدم بالصيغة الصحيحة، واستخراج أجزاء محددة من كتلة نصية أكبر. صياغتها موجزة، لكن من السهل كتابتها خطأ، لذلك يساعد اختبار النمط قبل استخدامه في برنامج على اكتشاف الأخطاء مبكرًا.
كيفية اختبار تعبير نمطي عبر الإنترنت
- اكتب نمطًا. أدخل التعبير النمطي في حقل النمط. تتحقق الأداة من الصياغة أثناء الكتابة وتعرض رسالة خطأ إذا كان النمط غير صالح، مثلًا إذا بقي قوس مربع أو قوس عادي مفتوحًا.
- اختر الأعلام. تغيّر الأعلام طريقة تطبيق النمط (انظر أدناه).
- أدخل نص الاختبار. اكتب النص المراد البحث فيه أو الصقه في مربع نص الاختبار.
- اقرأ النتائج. تُميَّز التطابقات في النص، وتبلغ الأداة بعدد التطابقات التي عثرت عليها. وإذا كان هناك نص اختبار، فإنها تبيّن أيضًا ما إذا كان النمط يطابق النص كاملًا من أوله إلى آخره، أم يطابق جزءًا منه فقط.
- احفظ نمطًا. يمكن تخزين النمط مع تسمية قصيرة لإعادة استخدامه لاحقًا. تُحفظ الأنماط في المتصفح لا على خادم، لذلك لا تظهر إلا على الجهاز والمتصفح نفسيهما.
- انسخ النتائج. يمكن نسخ النص المطابق أو النمط نفسه إلى الحافظة بنقرة واحدة.
أعلام التعبيرات النمطية
العلم حرف واحد يُضاف بعد النمط ويغيّر سلوكه. تدعم هذه الأداة أربعة أعلام، منفردة أو مجتمعة:
| العلم | الاسم | التأثير |
|---|---|---|
g | شامل | يعثر على كل تطابق في النص بدلًا من التوقف عند أول تطابق. |
i | غير حساس لحالة الأحرف | يتجاهل الفروق بين الأحرف الكبيرة والصغيرة. |
m | متعدد الأسطر | يجعل ^ و$ يطابقان بداية كل سطر ونهايته، لا بداية النص كله ونهايته فقط. ويغيّر مواضع العثور على التطابقات، لكنه لا يغيّر فحص النص الكامل الموضح أدناه. |
s | النقطة تشمل الكل | يجعل . يطابق أيضًا محارف السطر الجديد. |
يمكن جمع الأعلام، مثل gi للشمول وعدم الحساسية لحالة الأحرف، أو gms للشمول وتعدد الأسطر وشمول النقطة معًا.
كيفية العثور على التطابقات
تبحث أداة المطابقة دائمًا عن كل تكرار للنمط في النص، ولذلك يتصرف عدّ التطابقات كما لو كان العلم الشامل مفعّلًا حتى عند عدم اختياره من القائمة المنسدلة. يُسجَّل كل تطابق مع موضعه وطوله، ثم يُقسَّم النص الأصلي إلى أجزاء مطابقة وغير مطابقة حتى يمكن تمييز التطابقات.
للتحقق مما إذا كان النمط يطابق النص كاملًا، تضع الأداة النمط داخل مجموعة غير ملتقطة وتثبّته: ^(?:pattern)$. ويهم التجميع لأن | (التناوب) له أسبقية أضعف من المثبّتات. ومن دون المجموعة، فإن نمطًا مثل cat|dog عند تثبيته كالتالي ^cat|dog$ سيعني فعليًا «يبدأ بـ cat أو ينتهي بـ dog»، وهذا يختلف عن «النص كله هو cat أو dog».
يُسقط هذا الفحص أيضًا علم تعدد الأسطر. عند ضبط m، يطابق ^ و$ عند كل فاصل أسطر، لذلك سيجيب الاختبار المثبّت عن سؤال «هل يطابق أي سطر؟» بدلًا من «هل يطابق النص كله؟». تزيل الأداة m لهذا الفحص، وتبقي على i وs، لأن هذين العلمين يغيّران ما يطابقه النمط، لا موضع المثبّتات. لذلك تشير الإجابة دائمًا إلى النص الكامل، بما في ذلك فواصل الأسطر.
مثال محلول
النمط: \d+ (رقم واحد أو أكثر)، والعلم: g، ونص الاختبار: Room 12 has 5 chairs.
- التطابقات التي عُثر عليها:
12و5، لذا فإن عدد التطابقات هو 2. - فحص النص الكامل: لا يطابق النمط النص كاملًا، لأن النص يحتوي أيضًا على أحرف ومسافات.
إذا غُيّر نص الاختبار إلى 12345، فإن النمط نفسه يطابق السلسلة كاملة، ولذلك يُبلغ فحص النص الكامل بأن النتيجة صحيحة.
مرجع صياغة التعبيرات النمطية
مطابقة المحارف
| الرمز | المعنى | المثال | التطابقات |
|---|---|---|---|
. | أي محرف باستثناء محرف السطر الجديد | a.c | "abc"، "adc"، "a1c" |
\d | أي رقم، من 0 إلى 9 | \d{3} | "123", "456" |
\D | أي محرف ليس رقمًا | \D+ | "abc"، "xyz" |
\w | أي حرف أو رقم أو شرطة سفلية | \w+ | "abc123"، "test_123" |
\W | أي محرف ليس حرفًا أو رقمًا أو شرطة سفلية | \W+ | "!@#" |
\s | أي محرف من محارف المسافات البيضاء | a\sb | "a b" |
\S | أي محرف ليس من محارف المسافات البيضاء | \S+ | "abc" |
مثبتات المواضع
| الرمز | المعنى | المثال | التطابقات |
|---|---|---|---|
^ | بداية السطر | ^abc | "abc" في بداية السطر |
$ | نهاية السطر | abc$ | "abc" في نهاية السطر |
\b | حدّ كلمة | \bword\b | "word" باعتبارها كلمة كاملة |
محددات التكرار
| الرمز | المعنى | المثال | التطابقات |
|---|---|---|---|
* | صفر أو أكثر من العنصر السابق | a*b | "b"، "ab"، "aab" |
+ | واحد أو أكثر من العنصر السابق | a+b | "ab"، "aab" |
? | صفر أو واحد من العنصر السابق | colou?r | "color"، "colour" |
{n} | عدد n تمامًا من العنصر السابق | a{3} | "aaa" |
{n,} | n على الأقل من العنصر السابق | a{2,} | "aa"، "aaa" |
{n,m} | عدد بين n وm من العنصر السابق | a{2,4} | "aa"، "aaa"، "aaaa" |
مجموعات المحارف والمجموعات
| الرمز | المعنى | المثال | التطابقات |
|---|---|---|---|
[abc] | أي محرف واحد مدرج بين القوسين المربعين | [aeiou] | أي حرف علة منفرد |
[^abc] | أي محرف غير مدرج بين القوسين المربعين | [^aeiou] | أي محرف ليس حرف علة |
(abc) | يجمع المحارف ويلتقط التطابق | (abc)+ | "abc"، "abcabc" |
| a\ | b | يطابق a أو b | cat\ |
هناك ميزتان إضافيتان تجدر معرفتهما. يطابق الاستباق، المكتوب a(?=b)، الحرف "a" فقط عندما يتبعه "b"، من دون تضمين "b" في التطابق. ويطابق الاسترجاع، المكتوب (?<=a)b، الحرف "b" فقط عندما يأتي مباشرة بعد "a".
أمثلة شائعة على الأنماط
يمكن لصق هذه الأنماط في الأداة لمعرفة سلوكها مقابل نص نموذجي.
الأرقام فقط: يطابق ^\d+$ سلسلة مكوّنة بالكامل من أرقام، مثل "48210"، ويرفض أي شيء يحتوي على حرف أو مسافة.
عنوان بريد إلكتروني (فحص أساسي): يطابق ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ العناوين بالصيغة name@domain.tld، مثل "user@example.com". هذا فحص بسيط وليس صيغة البريد الإلكتروني الكاملة التي تحددها معايير الإنترنت، لذلك ستفشل بعض العناوين غير المعتادة رغم صحتها.
رقم هاتف أمريكي: يطابق ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ صيغًا مثل "(123) 456-7890" و"123-456-7890" و"1234567890".
تاريخ بصيغة YYYY-MM-DD: يتحقق ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ من أن الشهر بين 01 و12، وأن اليوم بين 01 و31. لكنه لا يتحقق من صلاحية اليوم في الشهر المحدد، لذلك يقبل "2024-02-30" رغم أن فبراير لا يحتوي أبدًا على 30 يومًا.
الأسئلة الشائعة
ما التعبير النمطي؟ التعبير النمطي هو تسلسل من المحارف يحدد نمط بحث. ويُستخدم للبحث عن النصوص ومطابقتها وتحريرها في معظم لغات البرمجة ومحررات النصوص.
ما وظيفة العلم الشامل؟
من دون العلم الشامل، يتوقف البحث عادةً بعد أول تطابق. ومع العلم الشامل (g)، يتابع البحث ويبلغ عن كل تطابق في النص. تبحث هذه الأداة دائمًا عن جميع التطابقات عند عدّها، بصرف النظر عن العلم المختار.
كيف أطابق نقطة حرفية أو محرفًا خاصًا آخر؟
ضع شرطة مائلة عكسية قبل المحرف. فمثلًا، يطابق \. نقطة حرفية بدلًا من «أي محرف»، وهو ما يعنيه . غير المُهرَّب.
ما الفرق بين .* و.*?؟
إن .* جشع ويطابق أكبر عدد ممكن من المحارف. أما .*? فهو كسول ويطابق أقل عدد ممكن من المحارف مع إبقاء بقية النمط قابلة للنجاح.
لماذا تقول الأداة إن النص لا يطابق بالكامل رغم أن كل سطر يطابق؟
يعامل فحص النص الكامل النص كسلسلة واحدة، بما في ذلك فواصل الأسطر. يطابق نمط مثل \d+ كل سطر من 12 و34 على حدة، لكن السطرين وفاصل السطر بينهما ليسا أرقامًا كلها، لذا فإجابة الفحص الكامل هي «لا». ولمطابقة نص يمتد عبر عدة أسطر، يجب أن يغطي النمط فواصل الأسطر أيضًا، مثلًا باستخدام [\s\S]+.
كيف أتحقق من أن سلسلة كاملة تطابق نمطًا، لا جزءًا منها فقط؟
أضف ^ في بداية النمط و$ في نهايته، مثل ^[0-9]+$ لسلسلة مكوّنة من أرقام فقط.
هل يطابق هذا المختبر قواعد التعبيرات النمطية في لغات البرمجة الأخرى؟ تستخدم هذه الأداة محرّك التعبيرات النمطية المدمج في JavaScript. تشترك معظم الصياغة الأساسية، مثل فئات المحارف ومحددات التكرار، بين لغات منها Python وJava وPerl، لكن بعض التفاصيل تختلف، لذلك لا يُضمن أن يتصرف النمط الذي يعمل هنا بالطريقة نفسها في كل مكان.
المراجع
- "Regular expression." ويكيبيديا، مؤسسة ويكيميديا. https://en.wikipedia.org/wiki/Regular_expression
- MDN Web Docs. "Regular expressions." موزيلا. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- Friedl، J. E. F. (2006). إتقان التعبيرات النمطية. O'Reilly Media.