⊗jsSpRELAB 133 of 294 menu

Pozitīvā un negatīvā aplūkošana JavaScript regulārajās izteiksmēs

Dažreiz ir jāatrisina šāda veida uzdevums: atrast virkni 'aaa' un aizstāt to ar '!', bet tikai tad, ja aiz 'aaa' atrodas 'x', bet pašu 'x' tajā pašā laikā neaizstāj. Ja mēs mēģināsim atrisināt uzdevumu 'tieši', mums nekas neizdosies:

'aaax baaa'.replace(/aaax/g, '!'); // atgriezīs '! baaa', bet vēlējāmies '!x baaa'

Aplūkošana uz priekšu

Lai atrisinātu uzdevumu, ir nepieciešams veids, kā pateikt, ka 'x' nevajadzētu aizstāt. Tas tiek darīts ar speciālo iekavu (?= ) palīdzību, kas tikai skatās, bet nepaņem līdzi.

Šīs iekavas sauc par pozitīvo aplūkošanu uz priekšu. Pozitīvs - jo 'x' (mūsu gadījumā) ir jāatrodas - tikai tad notiks aizstāšana.

Izmantosim šīs iekavas, lai atrisinātu mūsu uzdevumu:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // atgriezīs '!x aaab'

Pastāv arī negatīvā aplūkošana uz priekšu - (?! ) - tā, gluži pretēji, saka, ka kaut kam nevajadzētu atrasties. Nākamajā piemērā aizstāšana notiks tikai tad, ja aiz 'aaa' atrodas NE 'x':

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // atgriezīs 'aaax !b'

Aplūkošana atpakaļ

Līdzīgā veidā pastāv pozitīvā aplūkošana atpakaļ - (?<= ). Nākamajā piemērā aizstāšana notiks tikai tad, ja pirms 'aaa' atrodas 'x':

'xaaa'.replace(/(?<=x)aaa/g, '!'); // atgriezīs 'x!'

Un pastāv arī negatīvā aplūkošana atpakaļ - (?<! ). Nākamajā piemērā aizstāšana notiks tikai tad, ja pirms 'aaa' neatrodas 'x':

'baaa'.replace(/(?<!x)aaa/g, '!'); // atgriezīs 'b!'

Praktiskie uzdevumi

Dota virkne, kas satur funkciju nosaukumus:

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

Iegūstiet masīvu ar funkciju nosaukumiem no virknes.

Dota virkne ar tagu:

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

Iegūstiet masīvu ar šī taga atribūtu nosaukumiem.

Dota virkne ar mainīgajiem:

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

Iegūstiet apakšvirknes, pirms kurām atrodas dolāra zīme.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt