⊗jsSpRELAB 133 of 294 menu

Positiewe en Negatiewe Voorskou in JavaScript Reguliêre Uitdrukkings

Soms moet jy 'n probleem van hierdie tipe oplos: vind die string 'aaa' en vervang dit met '!', maar slegs as na 'aaa' 'x' staan, en die 'x' self moenie vervang word nie. As ons die probleem probeer oplos 'direk', sal ons nie slaag nie:

'aaax baaa'.replace(/aaax/g, '!'); // gee terug '! baaa', maar ons wou '!x baaa' hê

Voorskou Vorentoe

Om die probleem op te los, is 'n manier nodig om te sê dat 'x' nie vervang moet word nie. Dit word gedoen met behulp van spesiale hakies (?= ), wat net kyk, maar nie self saamneem nie.

Hierdie hakies word positiewe voorskou vorentoe genoem. Positief - omdat 'x' (in ons geval) moet wees - slegs dan sal vervanging plaasvind.

Kom ons pas hierdie hakies toe om ons probleem op te los:

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

Daar is ook negatiewe voorskou vorentoe - (?! ) - dit sê, andersom, dat daar nie iets moet wees nie. In die volgende voorbeeld sal vervanging slegs plaasvind as daar NIE 'n 'x' na 'aaa' is nie:

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

Voorskou Agtertoe

Op 'n soortgelyke manier is daar positiewe voorskou agtertoe - (?<= ). In die volgende voorbeeld sal vervanging slegs plaasvind as daar 'n 'x' voor 'aaa' is:

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

En daar is ook negatiewe voorskou agtertoe - (?<! ). In die volgende voorbeeld sal vervanging slegs plaasvind as daar NIE 'n 'x' voor 'aaa' is nie:

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

Praktiese Take

Daar is 'n string wat funksiename bevat:

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

Kry 'n array van funksiename uit die string.

Daar is 'n string met 'n tag:

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

Kry 'n array van eienskapsname vir hierdie tag.

Daar is 'n string met veranderlikes:

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

Kry die substringe waar voor die dollar-teken staan.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp