1.7 KiB
1.7 KiB
title, localeTitle
| title | localeTitle |
|---|---|
| Reuse Patterns Using Capture Groups | إعادة استخدام الأنماط باستخدام مجموعات الالتقاط |
إعادة استخدام الأنماط باستخدام Capture Group
تلميح 1:
كود المقدمة أدناه:
let testString = "test test test ";
let reRegex =/(test)\s\1/;
let result = reRegex.test(testString);
سوف تتطابق result مع test test فقط لأن \1 في هذا المثال تشير إلى نفس النص الذي تم مؤخرًا تطابقه مع المجموعة الأولى (test) .
إذا كنا سنترجم التعبير المعتاد حرفياً ، فسيبدو شيئًا كالتالي:
let re = /(test)\s\1/; let literalRe = /test\stest/;
كل من rea و literalRe تطابق نفس الشيء.
تلميح 2:
نظرا للرمز أدناه:
let testString = "test test test ";
let reRegex =/(test)(\s)\1\2\1/;
let result = reRegex.test(testString);
سيطابق test test test كامل test test test بسبب: \1 يكرر (اختبار) \2 يكرر (\ s)
تلميح 3:
الكود أدناه:
let testString = "test test test test test test";
let reRegex =/(test)(\s)\1\2\1/g;
let result = reRegex.test(testString);
نظرًا لأننا استخدمنا \g ، فلن يعود التعبير المعتاد الخاص بنا بعد أول مباراة كاملة ( test test test ) ويطابق كل التكرار.
تنبيه المفسد - الحل إلى الأمام!
حل:
let repeatNum = "42 42 42";
let reRegex = /^(\d+)\s\1\s\1$/;
let result = reRegex.test(repeatNum);