كيف يعمل regex في متصفحك؟
تأتي كل بيئة تشغيل JavaScript ومعها محرك تعابير منتظمة مدمج — يُترجم new RegExp(pattern, flags) نمطك، ثم تقوم دوال مثل String.prototype.match وString.prototype.replace وRegExp.prototype.exec بتشغيله على أي سلسلة دخل. تغلّف هذه الأداة ذلك المحرّك بواجهة لكي تحرّر وتشغّل وتفحص الأنماط من دون أن تترك المتصفح. لا شيء مما تكتبه — نمط، رايات، سلسلة اختبار أو استبدال — يُرسل عبر الشبكة.
كيف تعمل أداة اختبار regex؟
تتألف خط المعالجة من بضع خطوات قصيرة، تعمل كلها على جانب العميل عند كل ضغطة مفتاح (مع debouncing بمقدار 150 مللي ثانية ليظل الكتابة سلساً):
- يُقرأ جسم نمطك من الحقل أعلاه (دون فواصل
/أوّلية أو نهائية — فهي تزيينية). تُسَلسَل أزرار الرايات المختارة في سلسلة رايات مثلgiأوgimsuy. - يُترجم
new RegExp(patternBody, flags)النمط. إذا رمى المحركSyntaxError(مثل قوس غير مغلق أو إفلات غير صالح)، تُعرض الرسالة فوق سلسلة الاختبار وتُمسح قائمة المطابقات. خطأ الترجمة هو القيمة الحقيقيةerr.messageمن V8 / SpiderMonkey / JavaScriptCore، فيتطابق مع ما ستراه في DevTools. - لقائمة المطابقات، تَعدّ الأداة دائماً براية global اصطناعية — لذا حتى إذا أوقفت
g، تستمر القائمة في إظهار كل مطابقة. تمنع الحماية القياسية ضد مطابقات بعرض صفر (if (m.index === rx.lastIndex) rx.lastIndex++) دوران الحلقة على الأنماط التي تطابق سلسلة فارغة. يحترم وضع الاستبدال مجموعة راياتك الحقيقية لذا يتصرف$&مثلString.prototype.replace. - بين كل تكرار، تتحقق الأداة من
performance.now() - startوتلغي حالما تمر 50 مللي ثانية. يحمي ذلك من التراجع الكارثي على مدخلات مثل(a+)+$أمام سلسلة طويلة منa— إذ سيتجمد التبويب لولا ذلك. الحماية ببذل أقصى جهد: قد يستهلك نمط مرضي بمطابقة واحدة وقتاً داخل استدعاءexecواحد. إذا حدث ذلك، أعد تحميل التبويب وأعد كتابة النمط بمحدد كم غير نهم أو نمط بأسلوب امتلاكي ذرّي (مثل[^x]*x). - تُقسّم سلسلة الاختبار إلى مقاطع عند نطاق كل مطابقة، وتُغلَّف المقاطع المتطابقة بعناصر
<mark class="rx-match rx-cap-N">، حيث يتنقّلNبين ستة ألوان من لوحة الألوان، حتى تتميز المطابقات المتجاورة بسهولة على لمحة واحدة. تُعرض المجموعات المرقّمة (m[1]،m[2]، …) والمجموعات المسمّاة (m.groups) لكل مطابقة كصفوف بعلامات أسفلها؛ وإذا فُعِّلت الرايةd، تُعرض كذلك مؤشرات[start, end]لكل مجموعة.
لماذا تستخدم أداة اختبار regex هذه؟
- الخصوصية: يعمل كل نمط وسلسلة اختبار واستبدال في متصفحك باستخدام محرك JavaScript RegExp المدمج. لا شيء يغادر التبويب — أمر مهم حين يكون المدخل سجلّ عميل، أو نمط بيانات اعتماد مسرّبة، أو أي شيء آخر ما كنت ستلصقه في ساحة لعب regex SaaS مستضافة.
- نكهة صادقة: تكشف الأداة بالضبط محرك regex الذي يشغّله Node.js وChrome وSafari وFirefox وكل مدقّق نموذج قائم على المتصفح. لا توجد طبقة ترجمة إلى نكهة Perl تخفي اختلافات دقيقة — ما يعمل هنا يعمل في كودك.
- تصحيح أخطاء الالتقاط والمجموعات المسمّاة: تُعرض كل مجموعة مرقّمة (
$1،$2، …) ومسمّاة ($<year>) لكل مطابقة، فتستطيع بناء محلّل وقراءة الخانات دون تخمين. يتيح لك وضع الاستبدال خلط المجموعات بحرية —$2-$1يبدّل الخانتين الأولى والثانية، و$<name>يدخل خانة مسماة، و$&يردّ المطابقة كاملةً. - حماية من التراجع الكارثي: سقف 50 مللي ثانية على العدّ يلغي أنماطاً مرضية مثل
(a+)+$قبل أن تجمّد التبويب. ترى خطأً توضيحياً بدلاً من متصفح معلَّق، وتسترد الصفحة عافيتها فوراً.
ما الاستخدامات الشائعة لأداة اختبار regex؟
تظهر التعابير المنتظمة في تطوير الويب والأمن والعمل على البيانات — تستهدف هذه الأداة أكثر الحالات شيوعاً:
- التحقق من النماذج: ابنِ نموذجاً أولياً لنمط بريد إلكتروني أو هاتف أو رمز بريدي، الصق مدخلات نموذجية في سلسلة الاختبار، وأكّد أن كل حالة إيجابية تطابق وأن كل حالة سلبية لا تطابق قبل أن تُرسل النمط إلى كود الإنتاج.
- تجريف السجلات: الصق مقطعاً من مخرجات NGINX أو سجل تطبيق أو تدقيق، اكتب نمطاً بمجموعات مسمّاة للأجزاء التي تهمّك (
(?<ip>…) (?<path>…))، واقرأ الخانات الملتقطة لكل مطابقة للتأكد من صحة محلّلك. - البحث والاستبدال لإعادة التهيئة: استخدم وضع الاستبدال لإعادة كتابة المعرّفات في مقتطف —
(\w+)\.set(\w+)\(→$1.$2 =يحوّل استدعاءات setter إلى إسنادات خصائص، وتُظهر المعاينة المباشرة النتيجة قبل تثبيتها في codemod.
كيف يبدو مثال regex؟
خذ النمط (\d{4})-(\d{2})-(\d{2}) مع الراية g، يعمل على سلسلة الاختبار release 2025-11-15, prerelease 2026-05-25. يجد المحرك مطابقتين. المطابقة الأولى هي 2025-11-15 بالمجموعة 1 = 2025، المجموعة 2 = 11، المجموعة 3 = 15. المطابقة الثانية هي 2026-05-25 بالشكل نفسه من المجموعات. في وضع الاستبدال، يُعيد قالب الاستبدال $3/$2/$1 كتابة كلا التاريخين إلى 15/11/2025 و25/05/2026 — تحويل ISO إلى DMY بنمط واحد يمكنك التحقق منه بصرياً قبل وصل النمط بسكربت.
استخدم هذه الأداة كمسار سريع لأي عمل على regex — بناء، تصحيح أخطاء، أو إعادة كتابة الأنماط. كل شيء يعمل محلياً؛ لا شيء يُسجَّل؛ محرك regex هو ما يأتي مع متصفحك، فالسلوك يطابق ما سيراه كود الإنتاج وقت التشغيل.