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.