JavaScript regulýar ifadelerinde [ ] içindeki defis
Defis - şeýle hem [ ] içinde aýratyn nyşan
(ýöne daşynda - däl). Eger size özi defis nyşany hökmünde gerek bolsa - ony
toparyň bölüji hökmünde kabul edilmez ýerine goýuň.
Bu nähili üpjün: siz özüňizi duýmansyňyz ýaly nyşan topary döredip bilersiňiz. Mysal üçin,
şeýle - '[:-@]' - siz iki nokat, defis we it şekilli nyşany saýlaýandygyňyzy oýlaýarsyňyz, ýöne
aslynda : we @ arasyndaky nyşanlar topary çykýar. Bu topara
aşakdaky nyşanlar girýär: ? < = > : ;
Olar nireden geldi? ASCII tablisasyndan - iki nokatyň nomeri it şekilli nyşanyňkydan kiçi - we netijede topar çykýar. Ýagny ähli toparlar ASCII tablisasy boýunça çykýar (isleýän bolsaňyz mundan peýdalanyp bilersiňiz).
Bu bilen nädip göreşmeli: defis nyşanyny
nyşan topary hökmünde kabul edilmez ýerine goýuň,
mysal üçin, başynda ýa-da soňunda
(ýagny [soňundan ýa-da ]öňünden).
Şeýle hem defisi ekranlaşdyryp bolýar - onda
ol durmuşyndan garaşmazdan özüni aňladar. Mysal üçin, [:-@] ýerine
[:\-@] ýaz - we indi topar bolmaz, ýöne
üç nyşan bolar - iki nokat, defis we it şekilli nyşan
@.
Mysal
Aşakdaky mysalda gözleg şablony şeýle:
san 1, soňra 'a' -dan
'z' -a çenli harp, soňra san 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a-z]2/g, '!');
Netijede üýtgeýjä aşakdaky ýazylar:
'! 1-2 ! !'
Mysal
Indi defisi ekranlaşdyraly. Netijede
gözleg şablony şeýle: san 1, soňra
harp 'a', ýa-da defis, ýa-da harp 'z',
soňra san 2:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[a\-z]2/g, '!');
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! 1c2 !'
Mysal
Defisi ekranlaşdymazdan, ýöne ýerini üýtgetmek hem bolýar:
let str = '1a2 1-2 1c2 1z2';
let res = str.replace(/1[az-]2/g, '!');
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! 1c2 !'
Mysal
Aşakdaky mysalda gözleg şablony şeýle:
birinji nyşan - kiçi harplar ýa-da
defis '-', soňra iki sany 'x' harp:
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-z-]xx/g, '!');
Netijede üýtgeýjä aşakdaky ýazylar:
'! Axx ! @xx'
Mysal
Aşakdaky mysalda gözleg şablony şeýle:
birinci nyşan - kiçi, uly
harplar ýa-da defis '-', soňra iki sany
'x' harp:
let str = 'axx Axx -xx @xx';
let res = str.replace(/[a-zA-Z-]xx/g, '!');
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! ! @xx'
Mysal
Defisi iki toparyň arasyna hem goýup bolýar - ol ýerde ol elbetde ýene bir topar etmez:
let str = 'axx 9xx -xx @xx';
let res = str.replace(/[a-z-0-9]xx/g, '!');
Netijede üýtgeýjä aşakdaky ýazylar:
'! ! ! @xx'
Amaly meseleler
Setir berlen:
let str = 'xaz xBz xcz x-z x@z';
Aşakdaky şablona laýyk ähli setirleri tapyň:
harp 'x', uly ýa-da kiçi
harp ýa-da defis, harp 'z'.
Setir berlen:
let str = 'xaz x$z x-z xcz x+z x%z x*z';
Aşakdaky şablona laýyk ähli setirleri tapyň:
harp 'x', soňra ýa-da dollar, ýa-da
defis ýa-da goşmaça, soňra harp 'z'.