Koppelteken binne stelle in regulêre uitdrukkings JavaScript
Die koppelteken is ook 'n spesiaale karakter binne [ ]
(maar buite - nie). As jy die koppelteken self nodig het as 'n simbool - plaas dit dan waar
dit nie as 'n groepskeerder beskou sal word nie.
Hoekom dit belangrik is: jy kan onbewustelik 'n groep
karakters skep. Byvoorbeeld,
so - '[:-@]' - jy dink jy
kies 'n dubbelpunt, 'n koppelteken en 'n apestaart, maar in
werklikheid is dit 'n groep karakters tussen
: en @. Hierdie groep sluit die
volgende karakters in: ? < = > : ;
Waar kom hulle vandaan? Uit die ASCII-tabel - die dubbelpunt het 'n laer nommer as die apestaart - en so word die groep gevorm. Dit wil sê alle groepe word gevorm volgens die ASCII-tabel (jy kan dit gebruik as jy wil).
Hoe om dit te hanteer: plaas die koppeltekenkarakter
waar dit beslis nie as 'n groepkarakter beskou sal word nie,
byvoorbeeld aan die begin of aan die einde
(dit wil sê na [ of voor ]).
Jy kan ook die koppelteken ontsnap - dan
sal dit homself voorstel ongeag die
posisie. Byvoorbeeld, skryf in plaas van [:-@]
[:\-@] - en daar sal nie 'n groep wees nie, maar
drie karakters - 'n dubbelpunt, 'n koppelteken en 'n apestaart
@.
Voorbeeld
In die volgende voorbeeld is die soekpatroon soos volg:
syfer 1, dan letter van 'a'
tot 'z', dan syfer 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! 1-2 ! !'
Voorbeeld
Kom ons ontsnap nou die koppelteken. As gevolg hiervan
is die soekpatroon soos volg: syfer 1, dan
letter 'a', of koppelteken, of letter 'z',
dan syfer 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! 1c2 !'
Voorbeeld
Jy kan net die koppelteken verskuif sonder om dit te ontsnap:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! 1c2 !'
Voorbeeld
In die volgende voorbeeld is die soekpatroon soos volg:
eerste karakter - dit is kleinletters of
koppelteken '-', dan twee letters 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! Axx ! @xx'
Voorbeeld
In die volgende voorbeeld is die soekpatroon soos volg:
eerste karakter - dit is kleinletters, hoofletters
of koppelteken '-', dan twee letters
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! ! @xx'
Voorbeeld
Jy kan die koppelteken tussen twee groepe plaas - daar sal dit beslis nie nog 'n groep vorm nie:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! ! @xx'
Praktiese take
Gegee 'n string:
let str = 'xaz xBz xcz x-z x@z';
Vind alle stringe volgens die volgende patroon:
letter 'x', hoof- of kleinletter
of koppelteken, letter 'z'.
Gegee 'n string:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Vind alle stringe volgens die volgende patroon:
letter 'x', dan of 'n dollarteken, of
koppelteken of plus, dan letter 'z'.