شرح نمط regex بلغة واضحة
اعرف ما يفعله كل جزء من التعبير النمطي: ينقسم تعبير البريد الإلكتروني النموذجي إلى 16 جزءاً مشروحاً مع 3 مجموعات التقاط، أولاها باسم user، ولكل جزء موضعه ووصف واضح. مجاناً في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الأعلام
- i
- النكهة
- ECMAScript
- مجموعات الالتقاط
- 3
قد يكون التعبير النمطي قصيراً بما يكفي لكتابته في سطر واحد، لكنه يخفي عدة قواعد مستقلة. تتحقق هذه الأداة من نمط ECMAScript، ثم تقرؤه من اليسار إلى اليمين وتحدد المجموعات والمكممات وفئات المحارف والمراسي ومحارف الهروب والبدائل والمحارف البديلة والنص الحرفي. ويعرض كل مكوّن موضعه وعمق تداخله وشرحاً واضحاً، لكي تتمكنوا من المراجعة والتعلم والتوثيق وتصحيح الأخطاء من دون تغيير النمط أو تشغيله على بيانات خاصة.
اقرؤوا الشرح وفق ترتيب النمط
ابدؤوا بمصفوفة المكونات، فهي تتبع الترتيب الدقيق لمصدر النمط من اليسار إلى اليمين. يحدد كل عنصر نوعاً، ويحافظ على token الأصلي، ويعرض فهرساً يبدأ من الصفر وطول ذلك token. تتيح هذه المواضع ربط الشرح بالمحارف الدقيقة في تعبير طويل، بدلاً من تخمين القوس أو علامة الاستفهام المقصودة.
تبين قيمة العمق موقع العنصر داخل المجموعات المتداخلة. وتجعل عناصر بداية المجموعة ونهايتها البنية واضحة، بينما تحصل مجموعات الالتقاط على أرقامها بحسب ترتيب أقواس الفتح. كما تحتفظ مجموعات الالتقاط المسماة بأسمائها.
وتبقى المقاطع الحرفية المتجاورة مجمعة متى أمكن، كي يظل النص العادي مقروءاً ولا يتحول إلى عنصر منفصل لكل محرف. اقرأوا العناصر بالتتابع أولاً، ثم استخدموا الأعداد لتحديد البنى التي تستحق تدقيقاً أعمق، مثل كثرة المجموعات المتداخلة أو البدائل.
افهموا المجموعات والفئات والتكرار
تحدد المجموعات بنية التعبير، وقد تلتقط نصاً لاستخدامه لاحقاً. يبدأ القوس العادي مجموعة التقاط مرقمة، وتبدأ علامة الاستفهام متبوعة بنقطتين مجموعة غير ملتقطة، أما مجموعة الالتقاط المسماة فتظهر مع اسمها المعلن. ويجري تمييز النظر إلى الأمام والنظر إلى الخلف لأنهما يختبران النص المحيط من دون استهلاكه.
توصف فئة المحارف بأنها تطابق محرفاً واحداً مدرجاً فيها، مع توضيح الفئات المنفية وتلخيص النطاقات البسيطة، مثل A إلى Z. وتحصل محارف الهروب على أوصاف للفئات الشائعة، ومنها الأرقام ومحارف الكلمات والمسافات والحدود والمراجع الخلفية وخصائص Unicode والمحارف المرمزة. ترتبط المكممات مفهوماً بالعنصر السابق مباشرة: فالنجمة تعني صفراً أو أكثر، وعلامة الجمع واحداً أو أكثر، وعلامة الاستفهام صفراً أو واحداً، وتحدد الأقواس المعقوفة تكراراً دقيقاً أو حداً أدنى أو نطاقاً.
وإذا لحقت علامة استفهام بالمكمم، يصبح غير جشع، ولذلك يوضح الشرح أنه يفضل أقل عدد ممكن من التكرارات.
تحققوا من الصياغة واعرفوا اللهجة
يجري التحقق من النمط بواسطة محرك التعبيرات النمطية ECMAScript قبل إرجاع أي شرح. وهذه الخطوة مهمة لأن لهجات التعبيرات النمطية تختلف: فقد تحمل صياغة منسوخة من PCRE أو Python أو Java أو . NET معنى آخر في JavaScript، وقد تُرفض بعض البنى كلياً.
أرسلوا متن التعبير من دون شرطتي الإحاطة المائلتين، وضعوا علامات JavaScript الاختيارية في الحقل flags. يثبت التحقق أن التعبير قابل للترجمة، لكنه لا يثبت أنه يطابق بيانات العمل المقصودة، أو أنه فعّال مع كل مدخل، أو أنه آمن من التراجع المفرط. استخدموا الشرح لمراجعة البنية، ثم اختبروا عينات ممثلة يجب أن تتطابق وأخرى يجب ألا تتطابق باستخدام أداة اختبار مستقلة.
ولأن الخوارزمية حتمية ولا تستخدم الشبكة ولا تفحص نصاً مستهدفاً، فإن النمط والعلامات نفسيهما ينتجان دائماً الشرح المنظم نفسه.
حالات الاستخدام
راجعوا تعبيراً موروثاً
حوّلوا نمطاً كثيفاً من شفرة قديمة إلى قائمة مرتبة من البنى المفهومة قبل تعديله.
وثّقوا قواعد التحقق
أنشئوا ملاحظات منظمة عن المجموعات والمحارف المسموح بها والمراسي وقواعد التكرار في نموذج أو خدمة.
تعلموا صياغة التعبيرات النمطية
قارنوا رموز المصدر بالشروح الموجزة ومواضعها أثناء دراسة أنماط ECMAScript.
الأسئلة الشائعة
ما لهجة التعبيرات النمطية التي تشرحها الأداة؟
تتحقق الأداة من تعبيرات ECMAScript النمطية وتشرحها، وهي الصياغة التي يستخدمها RegExp في JavaScript.
هل تختبر الأداة النمط على النص الخاص بي؟
لا. إنها تشرح الصياغة فقط ولا تحتاج إلى نص مستهدف. استخدموا أداة اختبار regex مستقلة للتحقق من المطابقات.
هل تحدد مجموعات الالتقاط المسماة والمرقمة؟
نعم. ترقّم مجموعات الالتقاط بحسب ترتيب الفتح، وتعرض أيضاً الاسم المعلن للمجموعات المسماة.
هل أُدخل الشرطتين المائلتين المحيطتين بالتعبير؟
لا. أدخل جسم التعبير وحده دون الشرطتين المائلتين، وحدد الخيارات بشكل منفصل، مثل i لتجاهل حالة الأحرف. وتُرفض الخيارات غير الصالحة أو المكررة برسالة واضحة.
ماذا تعني علامة الاستفهام بعد التكرار؟
تجعل التكرار كسولاً، أي أنه يفضّل أقل عدد ممكن من المرات، ويذكر الشرح ذلك صراحة. أما علامة الاستفهام وحدها بعد عنصر مباشرة فتجعل ذلك العنصر اختيارياً فحسب.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev2/regex-explain \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"^(?<user>[A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\\.([A-Za-z]{2,})$"}'const res = await fetch("https://api.kit.forhosting.com/dev2/regex-explain", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pattern": "^(?<user>[A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\\.([A-Za-z]{2,})$"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/regex-explain",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pattern": "^(?<user>[A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\\.([A-Za-z]{2,})$"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/regex-explain", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pattern":"^(?<user>[A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\\\\.([A-Za-z]{2,})$"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pattern":"^(?<user>[A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\\.([A-Za-z]{2,})$"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/regex-explain", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pattern": "^(?<user>[A-Za-z0-9._%+-]+)@([A-Za-z0-9.-]+)\\.([A-Za-z]{2,})$"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.regex_explain",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_pattern_chars | 2000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
اقرؤوا الشرح وفق ترتيب النمط
يقدم الملخص عدداً سريعاً، وتفيد component_counts في التوثيق الآلي أو تقارير المراجعة.
تحققوا من الصياغة واعرفوا اللهجة
تؤدي الصياغة غير الصالحة والعلامات غير المدعومة أو المكررة إلى خطأ typed من نوع invalid_input، بدلاً من شرح جزئي أو مضلل.
أسئلة تقنية
هل يجب تضمين الشرطتين المائلتين المحيطتين؟
لا. أرسلوا متن التعبير فقط في pattern، وضعوا العلامات مثل i أو m في الحقل المنفصل flags.
ماذا يحدث إذا كان التعبير غير صالح؟
يعيد الطلب خطأ invalid_input يتضمن مشكلة الترجمة، ولا يعيد شرحاً جزئياً.
ما تكلفة طلب API؟
السعر الأساسي لطلب API هو $0.002. ويمكن تشغيل المنطق الحتمي نفسه في المتصفح أيضاً.