⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј