مختبر التعبيرات النمطية
افحص النمط كما سينفذه متصفحك تمامًا: البحث عن hello في hello world يعطي تطابقًا واحدًا عند الموضع 0، مع المجموعات المرقمة والمسماة. انتقل إلى وضع الاستبدال لترى النتيجة قبل لمس بياناتك الحقيقية. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النمط
- hello
- النص
- hello world
- الأعلام
- الكمية
- 1
هل تحتاج مختبر تعبيرات نمطية ECMAScript موثوقًا للأنماط والمجموعات والاستبدال؟ تستخدم هذه الأداة نفس محرك متصفحك: الأعلام g و i و m و s و u و y، ونتائج مطابقة بمجموعات مرقّمة ومسماة، وقوالب استبدال مع $$ و $& و $n و $<name>.
البحث: كل تطابق مع موضعه ومجموعاته
في وضع البحث يظهر كل تطابق مع النص الذي وُجد، والموضع الذي يبدأ عنده محسوبًا كما في نصوص JavaScript، والمجموعات المرقمة بترتيب فتح أقواسها، والمجموعات المسماة إن أعلنها النمط. بدون العلم g تحصل على تطابق واحد على الأكثر، ومع g يتقدم المحرك من تطابق إلى آخر دون تداخل. وتُتجاوز التطابقات الفارغة بأمان، فلا يدور النمط في حلقة لا تنتهي. ومع العلم u تعامل النقطة وفئات الحروف الرمز التعبيري حرفًا واحدًا لا وحدتين.
الاستبدال: قالب الاستبدال
في وضع الاستبدال يُطبَّق جدول الاستبدال المعتاد في JavaScript: تصبح $$ علامة دولار حرفية، وتُدرج $& التطابق كاملًا، وتُدرج علامة الدولار مع رقم مجموعة حتى 99 تلك المجموعة، وتُدرج $<name> مجموعة مسماة. وإذا لم يطابق شيء تكون النتيجة هي النص الأصلي دون تغيير ويبقى العدد صفرًا. ويساوي هذا العدد ما يعطيه وضع البحث للنمط والنص نفسيهما، فتعرف كم استبدالًا سيحدث قبل تطبيقه.
وضع المطابقة ومجموعات الالتقاط
في وضع المطابقة تسرد الاستجابة كل نتيجة مع المطابقة الكاملة وفهرس UTF-16 للبداية والمجموعات المرقّمة والمسماة الاختيارية. بدون العلم العام تحصل على مطابقة واحدة على الأكثر؛ مع g تُمرّ المطابقات غير المتداخلة؛ والعلم sticky y يلزم المطابقة عند الفهرس الحالي ولا يتخطى المسافات.
قوالب الاستبدال
بلا مطابقة تكون النتيجة النص الأصلي وcount صفرًا. استخدم نفس النمط والأعلام التي تلصقها في المحرر لمواءمة العميل والخادم.
الأعلام والأنماط غير الصالحة والحدود
تُقبل فقط g و i و m و s و u و y دون تكرار. حدود الطول تحمي التبويب: نمط حتى 1000 حرف ونص حتى 100000 وعلى الأكثر 10000 مطابقة لكل استدعاء. مع u تعمل النقطة على نقاط الترميز؛ وبدونها قد يشغل الرمز التعبيري وحدتَي UTF-16.
حالات الاستخدام
فحص الأنماط قبل الإطلاق
الصق سجلات أو مدخلات نماذج وتأكد من المجموعات والفهارس قبل وضع التعبير في الإنتاج.
تعليم التوثيق للتعبيرات النمطية
اعرض المطابقة والاستبدال بنفس قواعد ECMAScript المستخدمة في JavaScript.
حالات sticky و global
افحص تفاعل y و g مع المسافات والمطابقات الفارغة دون تخمين غرائب المتصفح.
الأسئلة الشائعة
ما نكهة التعبير النمطي المستخدمة؟
RegExp من ECMAScript، نفس محرك المتصفحات الحديثة وNode. ليست PCRE ولا Python re.
ما الأعلام المدعومة؟
g و i و m و s و u و y.
ما حدود الحجم؟
النمط ≤ 1000 حرف، النص ≤ 100000 حرف، وعلى الأكثر 10000 مطابقة لكل طلب.
لماذا أحصل على تطابق واحد فقط؟
بدون العلم g يتوقف البحث عند أول تطابق، كما في البحث العادي في JavaScript. وعند إضافة g يمر المختبر على كل التطابقات في النص دون تداخل بينها.
كيف أستخدم مجموعة ملتقطة في نص الاستبدال؟
استخدم $& للتطابق الكامل، وعلامة الدولار متبوعة برقم المجموعة للمجموعة المرقمة، و$<name> للمجموعة المسماة. واكتب $$ عندما تحتاج إلى علامة دولار حرفية.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev/regex-tester \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"\\w+","text":"hello world"}'const res = await fetch("https://api.kit.forhosting.com/dev/regex-tester", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pattern": "\\w+",
"text": "hello world"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/regex-tester",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pattern": "\\w+",
"text": "hello world"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/regex-tester", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pattern":"\\\\w+","text":"hello world"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pattern":"\\w+","text":"hello world"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/regex-tester", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pattern": "\\w+",
"text": "hello world"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.regex_tester",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_pattern_chars | 1000 |
max_text_chars | 100000 |
max_matches | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تشترك الأداة المجانية وواجهة API في نواة حتمية واحدة، فلا تنحرف الأتمتة عما عاينته.
وضع المطابقة ومجموعات الالتقاط
المجموعة الاختيارية التي لا تشارك تُعاد كـ null في JSON لتبقى الخانات ثابتة للسكربتات.
قوالب الاستبدال
يتبع وضع الاستبدال جدول ECMAScript: يصبح $$ دولارًا حرفيًا، و$& هي المطابقة الكاملة، و$1–$99 التقاطات مرقّمة إن وُجدت، و$<name> يدرج التقاطًا مسمّى.
الأعلام والأنماط غير الصالحة والحدود
النمط غير الصالح لا يرمي استثناءً خامًا من المحرك: تحصل على invalid_input مكتوب برسالة واضحة.
حالات التكامل
معاينة الاستبدالات
جرّب القوالب على عينة قصيرة ثم استدعِ API بنفس العقد من خط أنابيب.
أسئلة تقنية
هل مختبر التعبيرات النمطية عبر الإنترنت مجاني؟
نعم. أداة المتصفح تعمل محليًا بلا رسوم. طلبات API تستخدم رصيد KIT المدفوع مسبقًا بسعر الأساس المنشور $0.002؛ والمهام الفاشلة لا تُحاسب.
كيف تُعاد المجموعات الاختيارية؟
كـ null في مصفوفة groups (وفي named عند الاقتضاء)، بلا حذف وبلا undefined في JSON.
ماذا يحدث إذا كان النمط غير صالح؟
تحصل على invalid_input برسالة تبدأ بـ Regex inválida، لا SyntaxError بلا نوع.