ForHosting KIT · أدوات المطورين

تهريب رموز regex الخاصة للمطابقة الحرفية

اجعل أي نص آمناً للإدراج في تعبير نمطي: يصبح invoice.total [draft]? على الشكل invoice\.total \[draft\]\?، فتُطابَق النقطة والأقواس المربعة وعلامة الاستفهام كما هي بدلاً من أن تعمل كتعليمات. مجاناً في متصفحك.

  • مجاني
  • يعمل في متصفحك
  • دون تسجيل
  • بياناتك لا تغادر جهازك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا

لا يمكن دائمًا إدراج النص الحرفي مباشرة في تعبير نمطي. فالنقطة وعلامة الاستفهام والأقواس المربعة والشرطة المائلة العكسية تعليمات لها معنى خاص في صياغة regex، ولذلك قد تطابق القيمة غير المهرّبة نصًا غير مقصود أو تجعل النمط غير صالح. تحوّل هذه الإمكانية السلسلة إلى جزء من نمط ECMAScript يعامل جميع الرموز الوصفية في regex معاملة حرفية. وهي مفيدة عند إدخال عبارات البحث وأسماء الملفات والمعرّفات والتسميات وغيرها من القيم التي يقدمها المستخدمون ضمن تعبير نمطي أكبر من دون تغيير معناها.

حوّلوا النص الحرفي إلى جزء آمن من النمط

أرسلوا في حقل text القيمة الدقيقة التي تريدون من التعبير النمطي مطابقتها. تتضمن النتيجة escaped، وهو جزء من نمط تسبق فيه شرطة مائلة عكسية كل رمز وصفي خاص بتعبيرات ECMAScript النمطية. تبقى الحروف والأرقام والمسافات وعلامات الترقيم التي لا تحمل معنى في regex وفواصل الأسطر ومحارف Unicode بلا تغيير.

فالنقطة مثلًا تعني عادة أي محرف واحد في التعبير النمطي، أما النقطة المهرّبة فتعني نقطة فعلية. وتنشئ الأقواس المستديرة عادة مجموعة، وتفتح الأقواس المربعة فئة محارف، وقد تبدأ الأقواس المعقوفة عددًا للتكرار، بينما تتحكم علامة الاستفهام والنجمة في التكرار. يحافظ تهريب هذه الرموز على المعنى الحرفي للقيمة الأصلية.

لا يتضمن الجزء الناتج شرطات مائلة فاصلة ولا أعلامًا، ولذلك يمكنكم تمريره مباشرة إلى باني RegExp أو إدراجه في نمط أكبر أو حفظه بوصفه متن النمط. وتُقبل السلسلة الفارغة، وتنتج قيمة escaped فارغة لأنه لا توجد محارف تحتاج إلى تحويل.

ادمجوا القيمة المهرّبة مع صياغة regex مقصودة

يفيد التهريب خصوصًا عندما يأتي جزء من النمط من البيانات بينما يُكتب الجزء الآخر عمدًا بصياغة regex. افترضوا أن تطبيقًا يحتاج إلى العثور على رمز منتج أدخله مستخدم، ولكن في بداية السطر فقط. هرّبوا رمز المنتج أولًا، ثم أضيفوا مرساة البداية وأي منطق حدود مطلوب.

يفصل ذلك بوضوح بين بنية النمط الموثوقة والمحتوى الحرفي. لا تهرّبوا النمط كاملًا بعد تركيبه، لأن هذا سيعطّل أيضًا المراسي والمجموعات والبدائل ومحددات الكم التي أردتم إبقاءها فعالة. تستهدف النتيجة متن نمط ECMAScript، لا طريقة كتابته في مصدر JavaScript.

وهذا فرق مهم: فالشرطة المائلة العادية ليست خاصة داخل باني RegExp، لذا تبقى كما هي. إذا وضعتم النتيجة في تعبير regex حرفي محاط بشرطات مائلة داخل مصدر JavaScript مولّد، فإن تهريب الفاصل على مستوى المصدر خطوة مستقلة. في شيفرة التطبيقات المعتادة، يُفضّل تمرير السلسلة المهرّبة إلى new RegExp واختيار الأعلام بصورة منفصلة.

افهموا الضمان وتحققوا من التصميم المحيط

التحويل حتمي وخطي: فهو يمر على السلسلة المقدمة ويضع شرطة مائلة عكسية قبل المحارف التي تتحكم في صياغة تعبيرات ECMAScript النمطية. لا يستخدم الشبكة، ولا ينفذ التعبير الناتج، ولا يختار الأعلام، ولا يضيف المراسي، ولا يقرر ما إذا كانت المطابقة حساسة لحالة الأحرف. تعود هذه القرارات إلى التطبيق المحيط لأنها تغير سلوك المطابقة لا السلامة الحرفية.

لكل تنسيق قواعد تهريب خاصة، وعند جمعها مع تهريب regex يجب تطبيق كل طبقة عند الحد الصحيح. بعد تركيب النمط، اختبروا التعبير الكامل بأمثلة ممثلة يجب أن تتطابق وأخرى يجب ألا تتطابق، ولا سيما عند إضافة أجزاء اختيارية أو بدائل حول الجزء المهرّب.

إنشاء بحث حرفي

حوّلوا عبارة البحث إلى جزء آمن من regex قبل إضافة المراسي أو الأعلام المقصودة.

مطابقة أسماء الملفات والمعرّفات

حافظوا على النقاط والأقواس وعلامات الجمع وغيرها من محارف الصياغة داخل القيم الدقيقة.

حماية تركيب الأنماط الديناميكي

أبقوا النص الذي يقدمه المستخدمون حرفيًا، ودعوا الشيفرة الموثوقة تضيف بنية regex المحيطة.

ما المحارف التي يجري تهريبها؟

تُهرّب الشرطة المائلة العكسية وعلامة القبعة والدولار والنقطة والخط العمودي وعلامة الاستفهام والنجمة والجمع والأقواس المستديرة والمربعة والمعقوفة.

هل تتضمن النتيجة فواصل regex؟

لا. القيمة المهرّبة هي متن نمط ECMAScript أو جزء منه من دون شرطات مائلة فاصلة حوله.

لماذا لا تُهرّب الشرطة المائلة العادية؟

لأنها ليست خاصة داخل نمط ECMAScript يُمرر إلى باني RegExp. أما تهريب فاصل التعبير في المصدر فهو مهمة أخرى عند توليد JavaScript.

هل يمكنني إضافة المراسي أو الأعلام؟

نعم. أضيفوا صياغة regex المقصودة حول الجزء المهرّب، ومرروا الأعلام منفصلة عند إنشاء التعبير النمطي الكامل.

ماذا يحدث مع السلسلة الفارغة؟

تُقبل وتعيد قيمة escaped فارغة تمثل قيمة حرفية طولها صفر.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/dev2/regex-special-char-escape

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/dev2/regex-special-char-escape \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"invoice.total (USD) [draft]?"}'
{
  "text": "invoice.total (USD) [draft]?"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.regex_special_char_escape",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

افهموا الضمان وتحققوا من التصميم المحيط

كذلك لا تقتبس هذه الإمكانية القيمة من أجل سلسلة حرفية في لغة برمجة أو مستند JSON أو أمر صدفة أو سمة HTML أو URL. تُرفض المدخلات غير النصية بخطأ invalid_input بدل تحويلها، وبذلك لا تتحول الأرقام أو المصفوفات أو الكائنات أو null أو القيم المنطقية بصمت إلى نص نمط مفاجئ. تستخدم طلبات API السعر الأساسي المنشور وقدره $0.002.

ماذا يحدث إذا لم يكن text سلسلة؟

يفشل الطلب بخطأ invalid_input، ولا تُحوّل القيم ضمنيًا.

ما تكلفة طلب API؟

السعر الأساسي لطلب API هو $0.002 لكل طلب، ويمكن تنفيذ العملية الحتمية نفسها في المتصفح أيضًا.

اطّلع على توثيق KIT الكامل ←