Defisin unutar skupova u regularnim izrazima JavaScript
Defisin - takođe specijalni karakter unutar [ ]
(a izvan - nije). Ako vam je potreban sam
defisin kao karakter - onda ga postavite tamo,
gde neće biti shvaćen kao separator
grupe.
Zašto je ovo važno: možete napraviti grupu
karaktera, sami to ne primećujući. Na primer,
ovako - '[:-@]' - mislite da
odabirate dvotačku, defisin i ampersand, a u
stvari se dobija grupa karaktera između
: i @. U ovu grupu spadaju
sledeći karakteri: ? < = > : ;
Odakle se oni pojavljuju? Iz ASCII tabele - dvotačka ima manji broj nego ampersand - i dobija se grupa. To jest sve grupe se dobijaju po ASCII tabeli (po želji ovime se može koristiti).
Kako se boriti protiv ovoga: postavite karakter defisina
tamo gde sigurno neće biti shvaćen kao
karakter grupe, na primer, na početku ili na kraju
(to jest posle [ili pre ]).
Takođe se može eskejpovati defisin - onda
će označavati sam sebe nezavisno od
pozicije. Na primer, umesto [:-@] napisati
[:\-@] - i grupe više neće biti, a
biće tri karaktera - dvotačka, defisin i ampersand
@.
Primer
U sledećem primeru šablon pretrage je sledeći:
cifra 1, zatim slovo od 'a'
do 'z', zatim cifra 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! 1-2 ! !'
Primer
Hajde sada da eskejpujemo defisin. Kao rezultat
šablon pretrage je sledeći: cifra 1, zatim
slovo 'a', ili defisin, ili slovo 'z',
zatim cifra 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! 1c2 !'
Primer
Možete jednostavno pomeriti defisin, ne eskejpujući ga:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! 1c2 !'
Primer
U sledećem primeru šablon pretrage je sledeći:
prvi karakter - to su mala slova ili
defisin '-', onda dva slova 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! Axx ! @xx'
Primer
U sledećem primeru šablon pretrage je sledeći:
prvi karakter - to su mala, velika
slova ili defisin '-', onda dva slova
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! ! @xx'
Primer
Možete postaviti defisin između dve grupe - tu sigurno još neće napraviti još jednu grupu:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Kao rezultat u promenljivu će biti zapisano sledeće:
'! ! ! @xx'
Praktični zadaci
Data je string:
let str = 'xaz xBz xcz x-z x@z';
Pronađite sve stringove po sledećem šablonu:
slovo 'x', veliko ili malo
slovo ili defisin, slovo 'z'.
Data je string:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Pronađite sve stringove po sledećem šablonu:
slovo 'x', zatim ili dolar, ili
defisin ili plus, onda slovo 'z'.