1.6 KiB
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);