* chore(i18n,curriculum): update translations * chore: Italian to italian Co-authored-by: Nicholas Carrigan <nhcarrigan@gmail.com>
3.0 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
587d7dbb367417b2b2512baa | Riutilizzare i pattern usando i gruppi di cattura | 1 | 301364 | reuse-patterns-using-capture-groups |
--description--
Alcuni pattern che cerchi si verificheranno più volte in una stringa. È una perdita di tempo ripetere manualmente quell'espressione regolare. C'è un modo migliore per specificare quando si hanno più sottostringhe ripetute nella stringa.
È possibile cercare sottostringhe ripetute utilizzando i gruppi di cattura. Le parentesi, (
e )
, sono usate per trovare sottostringhe ripetute. Metti tra le parentesi l'espressione regolare del pattern che si ripeterà.
Per specificare dove apparirà quella stringa ripetuta, si utilizza una barra rovesciata (\
) e quindi un numero. Questo numero inizia da 1 e aumenta con ogni gruppo di cattura aggiuntivo che utilizzi. Un esempio potrebbe essere \1
per abbinare il primo gruppo.
L'esempio sottostante riconosce qualsiasi parola che compare due volte separata da uno spazio:
let repeatStr = "regex regex";
let repeatRegex = /(\w+)\s\1/;
repeatRegex.test(repeatStr);
repeatStr.match(repeatRegex);
La chiamata a test
restituirà true
e la chiamata a match
restituirà ["regex regex", "regex"]
.
Usando il metodo .match()
su una stringa esso restituirà un array con la stringa che corrisponde, insieme al suo gruppo di cattura.
--instructions--
Usa i gruppi di cattura in reRegex
per riconoscere una stringa che consiste solo dello stesso numero ripetuto esattamente tre volte separato da spazi singoli.
--hints--
La tua espressione regolare dovrebbe usare la classe scorciatoria di carattere per le cifre.
assert(reRegex.source.match(/\\d/));
La tua espressione regolare dovrebbe riutilizzare un gruppo di cattura due volte.
assert(reRegex.source.match(/\\1|\\2/g).length >= 2);
La tua espressione regolare dovrebbe riconoscere la stringa 42 42 42
.
assert(reRegex.test('42 42 42'));
La tua espressione regolare dovrebbe riconoscere la stringa 100 100 100
.
assert(reRegex.test('100 100 100'));
La tua espressione regolare non dovrebbe riconoscere la stringa 42 42 42 42
.
assert.equal('42 42 42 42'.match(reRegex.source), null);
La tua espressione regolare non dovrebbe riconoscere la stringa 42 42
.
assert.equal('42 42'.match(reRegex.source), null);
La tua espressione regolare non dovrebbe riconoscere la stringa 101 102 103
.
assert(!reRegex.test('101 102 103'));
La tua espressione regolare non dovrebbe riconoscere la stringa 1 2 3
.
assert(!reRegex.test('1 2 3'));
La tua espressione regolare dovrebbe riconoscere la stringa 10 10 10
.
assert(reRegex.test('10 10 10'));
--seed--
--seed-contents--
let repeatNum = "42 42 42";
let reRegex = /change/; // Change this line
let result = reRegex.test(repeatNum);
--solutions--
let repeatNum = "42 42 42";
let reRegex = /^(\d+)\s\1\s\1$/;
let result = reRegex.test(repeatNum);