⊗jsSpRELAB 133 of 294 menu

Positiivne ja negatiivne ettevaade JavaScripti regulaaravaldistes

Mõnikord on vaja lahendada sellist tüüpi ülesanne: leida string 'aaa' ja asendada see '!'-ga, kuid ainult siis, kui 'aaa' järel on 'x', kuid 'x' ise ei tohi asendada. Kui me proovime lahendada ülesannet 'täitsa otse', siis meil ei õnnestu:

'aaax baaa'.replace(/aaax/g, '!'); // tagastab '! baaa', kuid sooviti '!x baaa'

Ettevaade edasi

Ülesande lahendamiseks on vaja viisi öelda, et 'x' ei tohiks asendada. Seda tehakse spetsiaalsete sulgude abil (?= ), mis lihtsalt vaatavad, kuid ei võta endaga kaasa.

Neid sulgusid nimetatakse positiivseks ettevaateks edasi. Positiivne - kuna 'x' (meie puhul) peab olema - alles siis toimub asendamine.

Rakendame neid sulgusid meie ülesande lahendamiseks:

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

On olemas ka negatiivne ettevaade edasi - (?! ) - see, vastupidi, ütleb, et midagi ei peaks olema. Järgmises näites toimub asendamine ainult siis, kui 'aaa' järel ei ole 'x':

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

Ettevaade tagasi

Samamoodi on olemas positiivne ettevaade tagasi - (?<= ). Järgmises näites toimub asendamine ainult siis, kui 'aaa' ees on 'x':

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

Ja on ka negatiivne ettevaade tagasi - (?<! ). Järgmises näites toimub asendamine ainult siis, kui 'aaa' eel ei ole 'x':

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

Praktilised ülesanded

Antud on string, mis sisaldab funktsioonide nimesid:

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

Hankige stringist funktsioonide nimede massiiv.

Antud on stringiga silt:

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

Hankige selle sildi atribuutide nimede massiiv.

Antud on string muutujatega:

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

Hankige alamstringid, mille ees on dollari sümbol.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu