Mabano yasiyohifadhi katika Regular Expressions za JavaScript

Mabano ( ) yanatekeleza kazi mbili - kuweka herufi pamoja na kazi ya mfuko. Lakini je, tutafanyaje ikiwa tunahitaji kuweka pamoja, lakini si kuweka kwenye mfuko? Ili kutatua tatizo kama hilo, mabano maalum yasiyohifadhi (?: ) yalianzishwa - yanaweka pamoja, lakini hayaiweki kwenye mfuko.

Mfano

Katika mfano ufuatao, mabano ya kwanza yanahitajika kwa ajili ya kuweka pamoja, na ya pili - kwa mfuko. Hata hivyo, mabano yote yanaweka data kwenye mfuko:

javascriptlet str = 'abab123';
let res = str.match(/(ab)+([1-9]+)/);

Matokeo yake, mifukoni yetu itakuwa na yafuatayo:

javascriptconsole.log(res[0]); // itatoa 'abab123'
console.log(res[1]); // itatoa 'ab'
console.log(res[2]); // itatoa '123'

Mfano

Wacha tufanye ili mabano ya kwanza yaweke pamoja tu, wala isiweke kwenye mfuko:

javascriptlet str = 'abab123';
let res = str.match(/(?:ab)+([1-9]+)/);

Matokeo yake, kwenye mfuko wa kwanza kutakuwa na nambari yetu:

javascriptconsole.log(res[1]); // itatoa '123'