JavaScript regulýar ifadelerinde ýörite nyşanlary goramak
Bir ýörite nyşanyň özüni aňladýandygy bolsun diýip isleýändigimizi mysal edeliň. Munuň üçin onuň öňüne ters süýüm goýmaly. Mysallara seredeliň.
Mysal
Aşakdaky mysalda regulýary ýazan adama gözleg nusgasynyň şeýle görünmegini isläpdir: arp
'a', soňra goşuly '+', soňra arp 'x'. Emma, kody ýazan adam
'+' nyşanyny goramandygy üçin gözleg nusgasy aslynda şeýle görünýär:
arp 'a' bir ýa-da birnäçe gezek, soňra arp 'x':
let str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');
Netijede üýtgeýjäniň içine aşakdaky ýazylar:
'a+x ! ! !'
Mysal
Indi bolsa ýazan adam goşulyny ters süýüm bilen gorady. Indi gözleg nusgasy hälki ýaly görünýär:
arp 'a', soňra goşuly '+', soňra arp 'x'.
let str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');
Netijede üýtgeýjäniň içine aşakdaky ýazylar:
'! ax aax aaax'
Mysal
Bu mysalda nusga şeýle görünýär: arp 'a', soňra nokat '.', soňra arp
'x':
let str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');
Netijede üýtgeýjäniň içine aşakdaky ýazylar:
'! abx azx'
Mysal
Aşakdaky mysalda ýazan adam süýümi goraşy ýatdan çykardy we regulýara ähli aşaky setirler düşdi, sebäbi goralmadyk nokat islendik nyşany aňladýar:
let str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');
Netijede üýtgeýjäniň içine aşakdaky ýazylar:
'! ! !'
Bellik
Üns beriň: nokat özüni aňlatmaly bolsa we ony goraşy ýatdan çykarsaňyz, muny birden hem başdan geçirmek mümkin däl:
'a.x'.replace(/a.x/g, '!'); // '!' gaýtarar, islendigi ýaly
Görnüş taýyndan dogry işleýär (sebäbi nokat islendik nyşany, şol sanda adaty nokat
'.' hem aňladýar). Emma çalşyrylan setiri üýtgetsek, ýalňyşlygymyzy göreris:
'a.x abx azx'.replace(/a.x/g, '!'); // '! ! !' gaýtarar, emma '! abx azx' garaşylýardy
Ýörite nyşanlaryň we adaty nyşanlaryň sanawy
Adaty nyşany goraň, hiç zat bolmaýar - ol özüni aňlatmaga dowam eder. Sanylar bundan başga, olar goralyp bolmaýar.
Berlen nyşanyň ýörite nyşanmy däldigine şübhe köp ýüze çykýar. Käbir adamlar şübheli nyşanlaryň ählisini gödek goraýarlar. Emma bu amatly däl (regulýary ters süýümler bilen çöpläp taşlaýar).
Ýörite nyşanlar: $ ^ . * + ? \
/ {} [] () |
Ýörite nyşan däl: @ : , ' " ;
- _ = < > % # ~ `& !
Amaly meseleler
Setir berlen:
let str = 'a.a aba aea';
'a.a' setirini tapýan, galanlaryny alýan däldigine regulýary ýazyň.
Setir berlen:
let str = '2+3 223 2223';
'2+3' setirini tapýan, galanlaryny alýan däldigine regulýary ýazyň.
Setir berlen:
let str = '23 2+3 2++3 2+++3 345 567';
'2+3', '2++3', '2+++3' setirlerini tapýan, galanlaryny alýan
däldigine regulýary ýazyň (+ islendik sany bolup biler).
Setir berlen:
let str = '23 2+3 2++3 2+++3 445 677';
'23', '2+3', '2++3', '2+++3' setirlerini tapýan, galanlaryny
alýan däldigine regulýary ýazyň.
Setir berlen:
let str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';
'*q+', '*qq+', '*qqq+' setirlerini tapýan, galanlaryny alýan
däldigine regulýary ýazyň.
Setir berlen:
let str = '[abc] {abc} abc (abc) [abc]';
Inedördül möjekler içindäki setirleri tapýan we olary '!' bilen çalşyran regulýary ýazyň.