⊗jsSpRELAB 133 of 294 menu

Teigiamasis ir neigiamasis peržiūrėjimas JavaScript reguliariosiose išraiškose

Kartais reikia išspręsti tokio tipo uždavinį: rasti eilutę 'aaa' ir pakeisti ją į '!', bet tik jei po 'aaa' yra 'x', o pats 'x' tuo pačiu nepakeisti. Jei bandysime išspręsti uždavinį 'tiesiogiai', mums nieko nepavyks:

'aaax baaa'.replace(/aaax/g, '!'); // grąžins '! baaa', o norėjome '!x baaa'

Peržiūrėjimas į priekį

Norint išspręsti uždavinį, reikia būdo pasakyti, kad 'x' neturėtų būti keičiamas. Tai daroma naudojant specialiuosius skliaustus (?= ), kurie tik žiūri, bet neima su savimi.

Šie skliaustai vadinami teigiamuoju peržiūrėjimu į priekį. Teigiamas - nes 'x' (mūsų atveju) turi būti - tik tada įvyks pakeitimas.

Panaudokime šiuos skliaustus mūsų uždaviniui išspręsti:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // grąžins '!x aaab'

Yra ir neigiamasis peržiūrėjimas į priekį - (?! ) - jis, atvirkščiai, sako, kad kažko neturėtų būti. Šiame pavyzdyje pakeitimas įvyks tik jei po 'aaa' yra NE 'x':

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // grąžins 'aaax !b'

Peržiūrėjimas atgal

Analogiskai yra teigiamasis peržiūrėjimas atgal - (?<= ). Šiame pavyzdyje pakeitimas įvyks tik jei prieš 'aaa' yra 'x':

'xaaa'.replace(/(?<=x)aaa/g, '!'); // grąžins 'x!'

Taip pat yra ir neigiamasis peržiūrėjimas atgal - (?<! ). Šiame pavyzdyje pakeitimas įvyks tik jei prieš 'aaa' nėra 'x':

'baaa'.replace(/(?<!x)aaa/g, '!'); // grąžins 'b!'

Praktiniai uždaviniai

Duota eilutė, kurioje yra funkcijų pavadinimai:

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

Gaukite funkcijų pavadinimų masyvą iš eilutės.

Duota eilutė su tagu:

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

Gaukite šio tago atributų pavadinimų masyvą.

Duota eilutė su kintamaisiais:

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

Gaukite poeilutes, prieš kurias yra dolerio ženklas.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti