⊗jsSpRELAB 133 of 294 menu

Позитивно и негативно претраживање у JavaScript регуларним изразима

Понекад треба решити задатак овог типа: пронаћи ниску 'aaa' и заменити је са '!', али само ако после 'aaa' стоји 'x', а сам 'x' при томе не мењати. Ако покушамо да решимо задатак 'директно', ништа нећемо постићи:

'aaax baaa'.replace(/aaax/g, '!'); // враћа '! baaa', а хтели смо '!x baaa'

Претраживање напред

За решавање задатка потребан је начин да се каже, да 'x' не треба мењати. То се ради помоћу специјалних заграда (?= ), које само проверавају, али не захватају са собом.

Ове заграде се зову позитивно претраживање напред. Позитивно - јер 'x' (у нашем случају) мора да постоји - само тада ће се замена десити.

Применимо ове заграде за решавање нашег задатка:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // враћа '!x aaab'

Постоји и негативно претраживање напред - (?! ) - оно, обрнуто, каже да нечега не сме бити. У следећем примеру, замена ће се десити, само ако после 'aaa' не стоји 'x':

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // враћа 'aaax !b'

Претраживање уназад

Слично постоји позитивно претраживање уназад - (?<= ). У следећем примеру замена ће се десити, само ако пре 'aaa' стоји 'x':

'xaaa'.replace(/(?<=x)aaa/g, '!'); // враћа 'x!'

Такође постоји негативно претраживање уназад - (?<! ). У следећем примеру замена ће се десити, само ако пре 'aaa' не стоји 'x':

'baaa'.replace(/(?<!x)aaa/g, '!'); // враћа 'b!'

Практични задаци

Дата је ниска која садржи имена функција:

let str = 'func1() func2() func3()';

Добијте низ имена функција из ниске.

Дата је ниска са тагом:

let str = '<a href="" class="eee" id="zzz">';

Добијте низ имена атрибута овог тага.

Дата је ниска са променљивима:

let str = '$aaa $bbb $ccc xxxx';

Добијте подниске, испред којих стоји знак долара.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј