--- id: 587d7dbb367417b2b2512baa title: Reuse Patterns Using Capture Groups challengeType: 1 videoUrl: '' localeTitle: إعادة استخدام الأنماط باستخدام مجموعات الالتقاط --- ## Description
ستحدث بعض الأنماط التي تبحث عنها عدة مرات في سلسلة. من المبدد أن نكرر هذا التعبير المعتاد يدويًا. توجد طريقة أفضل لتحديد عندما يكون لديك سلاسل فرعية متعددة مكررة في السلسلة الخاصة بك. يمكنك البحث عن سلاسل فرعية مكررة باستخدام capture groups . يتم استخدام الأقواس ، ( و ) ، للعثور على أجزاء فرعية متكررة. يمكنك وضع تعبير النمط الذي سيتكرر بين الأقواس. لتحديد مكان ظهور سلسلة التكرار ، استخدم خط مائل عكسي ( \ ) ثم رقمًا. يبدأ هذا الرقم من 1 ويزيد مع كل مجموعة التقاط إضافية تستخدمها. على سبيل المثال سيكون \1 لمطابقة المجموعة الأولى. يتطابق المثال أدناه مع أي كلمة تحدث مرتين مفصولة بمسافة:
let repeatStr = "regex regex"؛
اترك repeatRegex = / (\ w +) \ s \ 1 /؛
repeatRegex.test (repeatStr)؛ // يعود صحيح
repeatStr.match (repeatRegex)؛ // Returns ["regex regex"، "regex"]
باستخدام أسلوب .match() على سلسلة سيعود مصفوفة مع السلسلة يطابق ، جنبا إلى جنب مع مجموعة الالتقاط الخاصة به.
## Instructions
استخدم capture groups في reRegex لمطابقة الأرقام التي يتم تكرارها ثلاث مرات فقط في سلسلة ، كل منها مفصولة بمسافة.
## Tests
```yml tests: - text: يجب أن يستخدم تعبيرك المنطقي فئة الأحرف المختصرة للأرقام. testString: 'assert(reRegex.source.match(/\\d/), "Your regex should use the shorthand character class for digits.");' - text: يجب أن يعيد التعبير المعتاد مجموعة الالتقاط مرتين. testString: 'assert(reRegex.source.match(/\\\d/g).length === 2, "Your regex should reuse the capture group twice.");' - text: يجب أن يكون للتعبير العادي منطقتين تفصلان الأرقام الثلاثة. testString: 'assert(reRegex.source.match(/\\s/g).length === 2, "Your regex should have two spaces separating the three numbers.");' - text: يجب أن يتطابق تعبيرك العادي مع "42 42 42" . testString: 'assert(reRegex.test("42 42 42"), "Your regex should match "42 42 42".");' - text: يجب أن يتطابق تعبيرك العادي مع "100 100 100" . testString: 'assert(reRegex.test("100 100 100"), "Your regex should match "100 100 100".");' - text: يجب ألا يتطابق تعبيرك العادي مع "42 42 42 42" . testString: 'assert.equal(("42 42 42 42").match(reRegex.source), null, "Your regex should not match "42 42 42 42".");' - text: يجب ألا يتطابق تعبيرك العادي مع "42 42" . testString: 'assert.equal(("42 42").match(reRegex.source), null, "Your regex should not match "42 42".");' - text: يجب ألا يتطابق تعبيرك العادي مع "101 102 103" . testString: 'assert(!reRegex.test("101 102 103"), "Your regex should not match "101 102 103".");' - text: يجب ألا يتطابق تعبيرك العادي مع "1 2 3" . testString: 'assert(!reRegex.test("1 2 3"), "Your regex should not match "1 2 3".");' - text: يجب أن يتطابق تعبيرك العادي مع "10 10 10" . testString: 'assert(reRegex.test("10 10 10"), "Your regex should match "10 10 10".");' ```
## Challenge Seed
```js let repeatNum = "42 42 42"; let reRegex = /change/; // Change this line let result = reRegex.test(repeatNum); ```
## Solution
```js // solution required ```