Defisejs regulāro izteiksmju kopās JavaScript
Defisejs - arī ir speciāls simbols iekš [ ]
(taču ārpus - nē). Ja jums vajag pašu
defiseji kā simbolu - tad novietojiet to tur,
kur tas netiks uztverts kā grupas atdalītājs.
Kāpēc tas ir svarīgi: jūs varat nezinot izveidot simbolu grupu.
Piemēram,
šeit - '[:-@]' - jūs domājat, ka
izvēlaties kolu, defiseju un @ simbolu, taču
patiesībā izveidojas simbolu grupa starp
: un @. Šajā grupā ietilpst
sekojošie simboli: ? < = > : ;
No kurienes tie nāk? No ASCII tabulas - kolas simbols ir ar mazāku numuru nekā @ simbols - un veidojas grupa. Tas ir, visas grupas veidojas pēc ASCII tabulas (ja vēlas, to var izmantot).
Kā ar to cīnīties: novietojiet defiseja simbolu
tur, kur tas noteikti netiks uztverts kā
grupas simbols, piemēram, sākumā vai beigās
(tas ir pēc [vai pirms ]).
Var arī ekrānēt defiseju - tad
tas apzīmēs sevi neatkarīgi no
pozīcijas. Piemēram, [:-@] vietā rakstīt
[:\-@] - un grupas vairs nebūs, bet
būs trīs simboli - kols, defisejs un @ simbols
@.
Piemērs
Nākamajā piemērā meklēšanas šablons ir šāds:
cipars 1, tad burts no 'a'
līdz 'z', tad cipars 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! 1-2 ! !'
Piemērs
Tagad ekrānēsim defiseju. Rezultātā
meklēšanas šablons ir šāds: cipars 1, tad
burts 'a', vai defisejs, vai burts 'z',
tad cipars 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! 1c2 !'
Piemērs
Var vienkārši pārkārtot defiseju, to neekrānējot:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! 1c2 !'
Piemērs
Nākamajā piemērā meklēšanas šablons ir šāds:
pirmais simbols - mazie burti vai
defisejs '-', tad divi burts 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! Axx ! @xx'
Piemērs
Nākamajā piemērā meklēšanas šablons ir šāds:
pirmais simbols - mazie, lielie
burti vai defisejs '-', tad divi burts
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! @xx'
Piemērs
Var novietot defiseju starp divām grupām - tur tas noteikti vēl neizveidos citu grupu:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! @xx'
Praktiskie uzdevumi
Dota virkne:
let str = 'xaz xBz xcz x-z x@z';
Atrodiet visas virknes pēc sekojoša šablona:
burts 'x', lielais vai mazais
burts vai defisejs, burts 'z'.
Dota virkne:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Atrodiet visas virknes pēc sekojoša šablona:
burts 'x', tad vai dolāra zīme, vai
defisejs vai plusa zīme, tad burts 'z'.