اختبر تعبيرًا نمطيًا على عينات وافحص مجموعات الالتقاط
طبّق تعبيرًا نمطيًا على قائمة من العينات واعرف أيها تطابق وما التقطته كل مجموعة: من ثلاث عينات تتطابق اثنتان، وتعطي Gadget: 7 القيمتين Gadget و7. يُختبر كل سطر على حدة فلا تؤثر نتيجة في التالية. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النمط
- ^(?<name>[A-Za-z]+):\s*(\d+)$
- الأعلام
- i
- العينات
- Widget: 42, not a record, Gadget: 7
- عدد العينات
- 3
- عدد التطابقات
- 2
نادرًا ما يكشف اختبار تعبير نمطي على سلسلة واحدة منتقاة بعناية عن جميع المشكلات. فالمدخلات الفعلية تشمل سجلات صالحة، وحالات مشابهة ينبغي رفضها، واختلاف حالة الأحرف، وحقولًا اختيارية، وقيمًا متكررة. تطبق هذه الأداة نمط ECMAScript وأعلامه على قائمة من سلاسل العينات، مع تقييم كل سلسلة بصورة مستقلة. وتبين العينات المتطابقة، وجميع التطابقات عند تفعيل البحث الشامل، والمجموعات المرقمة والمسماة التي شاركت فعلًا. أما النمط غير الصالح أو العلم غير المدعوم فينتج خطأ واضحًا قبل إرجاع أي نتائج.
أنشئ مجموعة عينات تختبر حدود النمط
أدخل نص التعبير النمطي كما يستلمه JavaScript تمامًا، من دون شرطتي الإحاطة المائلتين. وأضف الأعلام في حقل منفصل حتى لا يلتبس الفاصل بشرطة مائلة حرفية. ثم قدم أمثلة تمثل التطابقات المتوقعة وحالات الرفض المقصودة.
من المفيد أن تضم المجموعة قيمة صالحة عادية، وحالة حدية، واختلافات في حالة الأحرف عندما يكون علم تجاهلها مهمًا، وقيمة فارغة أو ناقصة، وسلسلة تحتوي نصًا مشابهًا لا ينبغي قبوله. تكتسب علامتا تثبيت البداية والنهاية أهمية خاصة عندما تريد التحقق من العينة كاملة بدلًا من العثور على جزء منها. تُقيّم كل عينة بتعبير نمطي جديد مستقل، ولذلك لا تنتقل حالة البحث الشامل أو البحث الملتصق من سلسلة إلى أخرى.
تحتفظ النتيجة بالعينة الأصلية وتضيف قيمة منطقية للتطابق، مما يسهل قراءتها يدويًا أو استخدامها في تأكيدات الاختبار الآلي. وبهذه البنية يتحول الاطمئنان العام إلى النمط إلى مجموعة أمثلة قابلة للتكرار توثق حدوده المقصودة بوضوح.
اقرأ التطابقات ومجموعات الالتقاط بدقة
تحتوي مصفوفة التطابقات لكل عينة ناجحة على النص المطابق بالضبط وعلى موضع UTF-16 يبدأ من الصفر وفق فهرسة سلاسل JavaScript. وتظهر مجموعات الالتقاط المرقمة بحسب ترتيب فتح الأقواس في كائنات تحمل الرقم والقيمة. تُحذف المجموعات الاختيارية التي لم تشارك، وبذلك لا تظهر حقول null ملتبسة مع بقاء الرقم الأصلي لكل مجموعة مشاركة.
من دون العلم الشامل، يعيد ECMAScript أول تطابق في العينة فقط. ومع العلم الشامل، تتابع الأداة جميع التطابقات غير المتداخلة. ويجري التقدم بأمان بعد التطابقات ذات الطول الصفري لمنع الدوران بلا نهاية.
أما البحث الملتصق فيحافظ على سلوك JavaScript الأصلي، إذ يجب أن ينجح عند الموضع الحالي تحديدًا. افحص النص المطابق وقيم الالتقاط معًا، لأن نتيجة التطابق الصحيحة قد تخفي مع ذلك حدًا أوسع أو أضيق من المطلوب، أو مجموعة مرتبطة ببديل غير صحيح.
استخدم الأخطاء والحدود في الفحوص الآلية
يُصرّف النمط والأعلام قبل بدء تقييم العينات. ويجب أن تكون الأعلام من مجموعة ECMAScript المدعومة وألا تتكرر. يضمن هذا الفشل المبكر ألا ينتج التعبير المشوه قائمة مضللة من العينات غير المتطابقة.
تعمل القدرة بصورة حتمية، ولا تستخدم الشبكة أو استدلال النماذج أو الاختيار العشوائي أو الوقت، ولذلك تنتج المدخلات المتطابقة مخرجات منظمة متطابقة. وتحد القيود العملية طول النمط وعدد العينات وطول كل عينة وعدد التطابقات فيها. وعند تغيير النمط، تستطيع التأكد من استمرار قبول الأمثلة المقصودة ورفض الأمثلة المستبعدة.
حالات الاستخدام
تحقق من أنماط الاستخراج
اختبر أنماط السجلات وأسماء الملفات والمعرّفات على أمثلة واقعية، وافحص كل حقل مستخرج.
احمِ إعادة بناء التعبير
احتفظ بعينات ناجحة ومرفوضة في اختبار انحدار لاكتشاف أي اتساع أو تضييق غير مقصود.
شخّص مجموعات الالتقاط
قارن الالتقاطات المرقمة والمسماة عبر أشكال إدخال متعددة قبل دمج التعبير في تطبيقك.
الأسئلة الشائعة
هل ينبغي أن يتضمن النمط شرطتي الإحاطة المائلتين؟
لا. أرسل نص التعبير وحده، وضع أعلامًا مثل g وi وm في حقل الأعلام المخصص.
لماذا لا تعرض العينة إلا تطابقًا واحدًا؟
من دون العلم الشامل يعيد ECMAScript التطابق الأول فقط. أضف g للحصول على جميع التطابقات غير المتداخلة.
ما التكلفة؟
أما التشغيل من هذه الصفحة فهو مجاني داخل المتصفح.
ما العينات التي يحسن إدراجها في الاختبار؟
أدرج قيمة صحيحة عادية، وحالة حدّية، والقيمة نفسها بحالة أحرف مختلفة إن كان ذلك مهمًا، وقيمة فارغة أو ناقصة، ونصًا مشابهًا لا ينبغي أن يتطابق. هكذا ترى ما يقبله التعبير وما يرفضه.
لماذا أحتاج إلى علامتي البداية والنهاية للتحقق من قيمة كاملة؟
لأنهما تُلزمان التطابق بأن يبدأ من أول العينة وينتهي عند آخرها تمامًا. ومن دونهما يُعدّ السطر مطابقًا لمجرد احتوائه على النص المطلوب في مكان ما، حتى لو كان باقيه خاطئًا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/regex-test \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pattern":"^(?<name>[A-Za-z]+):\\s*(\\d+)$","samples":["Widget: 42","not a record","Gadget: 7"]}'const res = await fetch("https://api.kit.forhosting.com/web/regex-test", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pattern": "^(?<name>[A-Za-z]+):\\s*(\\d+)$",
"samples": [
"Widget: 42",
"not a record",
"Gadget: 7"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/regex-test",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pattern": "^(?<name>[A-Za-z]+):\\s*(\\d+)$",
"samples": [
"Widget: 42",
"not a record",
"Gadget: 7"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/regex-test", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pattern":"^(?<name>[A-Za-z]+):\\\\s*(\\\\d+)$","samples":["Widget: 42","not a record","Gadget: 7"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pattern":"^(?<name>[A-Za-z]+):\\s*(\\d+)$","samples":["Widget: 42","not a record","Gadget: 7"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/regex-test", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"pattern": "^(?<name>[A-Za-z]+):\\s*(\\d+)$",
"samples": [
"Widget: 42",
"not a record",
"Gadget: 7"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.regex_test",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_pattern_chars | 2000 |
max_samples | 500 |
max_sample_chars | 100000 |
max_matches_per_sample | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
اقرأ التطابقات ومجموعات الالتقاط بدقة
كما تظهر الالتقاطات المسماة في named_groups عندما تكون قد شاركت.
استخدم الأخطاء والحدود في الفحوص الآلية
فإذا رفض ECMAScript النمط، يفشل الطلب بخطأ invalid_input توضح رسالته أن التعبير النمطي غير صالح، وتتضمن التفصيل المفيد الصادر عن المحرك. في مسار التكامل المستمر، احفظ عينات ممثلة إلى جوار الشفرة التي تستخدم النمط، ثم استدع هذه القدرة وتحقق من matched_count ومن قيم الالتقاط المهمة. يفيد مشغل المتصفح عند إنشاء النمط، بينما تبلغ كلفة API مقدار $0.002 لكل طلب عند أتمتة الاختبار نفسه.
أسئلة تقنية
ماذا يحدث إذا كان نمط التعبير غير صالح؟
يفشل الطلب بخطأ invalid_input قبل تقييم أي عينة.
هل تظهر مجموعات الالتقاط المسماة؟
نعم. تظهر الالتقاطات المسماة المشاركة في named_groups، وتُسرد الالتقاطات المرقمة مع أرقام مجموعاتها.