Liniuța în seturile din expresiile regulate JavaScript
Liniuța - este de asemenea un caracter special în interiorul [ ]
(însă în afară - nu). Dacă aveți nevoie de liniuța însăși
ca simbol - atunci plasați-o acolo,
unde nu va fi interpretată ca separator
de grup.
De ce este acest lucru important: puteți crea un grup
de caractere, fără să vă dați seama. De exemplu,
așa - '[:-@]' - credeți că
selectați două puncte, liniuță și arond, însă
de fapt rezultă un grup de caractere între
: și @. În acest grup sunt incluse
următoarele caractere: ? < = > : ;
De unde au apărut? Din tabelul ASCII - două puncte are un număr mai mic decât arond - și rezultă un grup. Adică toate grupurile se formează conform tabelului ASCII (dacă doriți, puteți folosi acest lucru).
Cum să procedați: plasați simbolul liniuței
acolo, unde cu siguranță nu va fi interpretat ca
simbol de grup, de exemplu, la început sau la sfârșit
(adică după [sau înainte de ]).
De asemenea, puteți să scăpați liniuța - atunci
ea va reprezenta pe ea însăși indiferent de
poziție. De exemplu, în loc de [:-@] scrieți
[:\-@] - și grupul nu va mai exista, ci
vor fi trei caractere - două puncte, liniuță și arond
@.
Exemplu
În următorul exemplu șablonul de căutare este:
cifra 1, apoi litera de la 'a'
până la 'z', apoi cifra 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Ca rezultat, în variabilă se va scrie următorul text:
'! 1-2 ! !'
Exemplu
Să scăpăm acum liniuța. Ca rezultat
șablonul de căutare este: cifra 1, apoi
litera 'a', sau liniuță, sau litera 'z',
apoi cifra 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Ca rezultat, în variabilă se va scrie următorul text:
'! ! 1c2 !'
Exemplu
Puteți pur și simplu să mutați liniuța, fără a o scăpa:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Ca rezultat, în variabilă se va scrie următorul text:
'! ! 1c2 !'
Exemplu
În următorul exemplu șablonul de căutare este:
primul caracter - este litere mici sau
liniuță '-', apoi două litere 'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Ca rezultat, în variabilă se va scrie următorul text:
'! Axx ! @xx'
Exemplu
În următorul exemplu șablonul de căutare este:
primul caracter - este litere mici, litere
mari sau liniuță '-', apoi două litere
'x':
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! @xx'
Exemplu
Puteți plasa liniuța între două grupuri - acolo cu siguranță nu va mai crea încă un grup:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Ca rezultat, în variabilă se va scrie următorul text:
'! ! ! @xx'
Probleme practice
Este dat șirul:
let str = 'xaz xBz xcz x-z x@z';
Găsiți toate șirurile conform următorului șablon:
litera 'x', literă mare sau mică
sau liniuță, litera 'z'.
Este dat șirul:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Găsiți toate șirurile conform următorului șablon:
litera 'x', apoi sau dolar, sau
liniuță sau plus, apoi litera 'z'.