Kuzuia Herufi Maalum Katika Usanifu (Regular Expressions) JavaScript
Tukichukulia kwamba tunataka kufanya herufi maalum iashirie yenyewe. Ili kufanya hivyo inahitaji kuzuiwa kwa kutumia mshale wa nyuma (backslash). Hebu tuangalie kwa mifano.
Mfano
Katika mfano ufuatao mwandishi wa usanifu alitaka,
muundo wa utafutaji uonekane kama hivi: herufi
'a', kisha alama ya jumlisha '+', kisha
herufi 'x'. Hata hivyo, mwandishi wa msimbo
hakuizuia alama '+' na kwa hivyo
muundo wa utafutaji kweli unafanana na hivi:
herufi 'a' mara moja au zaidi, kisha
herufi 'x':
javascriptlet str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');
Matokeo yake, kwenye kibadala kitaandikwa yafuatayo:
javascript'a+x ! ! !'
Mfano
Sasa mwandishi ameizuia alama ya jumlisha kwa mshale wa nyuma.
Sasa muundo wa utafutaji unaonekana kama inavyotakiwa: herufi
'a', kisha alama ya jumlisha
'+', kisha herufi 'x'.
javascriptlet str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');
Matokeo yake, kwenye kibadala kitaandikwa yafuatayo:
javascript'! ax aax aaax'
Mfano
Katika mfano huu muundo unafanana na hivi: herufi
'a', kisha nukta '.', kisha
herufi 'x':
javascriptlet str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');
Matokeo yake, kwenye kibadala kitaandikwa yafuatayo:
javascript'! abx azx'
Mfano
Katika mfano ufuatao mwandishi amesahau kuzuia nukta na usanifu umevuta herufi zote, kwa sababu nukta isiyozuiwa inaashiria herufi yoyote:
javascriptlet str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');
Matokeo yake, kwenye kibadala kitaandikwa yafuatayo:
javascript'! ! !'
Uzingatio
Zingatia kwamba kama utasahau mshale wa nyuma kwa nukta (wakati inapaswa kuashiria yenyewe) - hii inaweza hata kutokugundulika:
javascript'a.x'.replace(/a.x/g, '!'); // itarudisha '!', kama tulivyotaka
Kwa kuonekana inafanya kazi sawa (kwa sababu nukta
inaashiria herufi yoyote, pamoja na nukta ya kawaida
'.'). Lakini kama utakibadilisha mfuatano,
ambao badiliko linatendeka - tutaona makosa yetu
ya wazi:
javascript'a.x abx azx'.replace(/a.x/g, '!'); // itarudisha '! ! !', lakini ilitarajiwa '! abx azx'
Orodha ya alama maalum na za kawaida
Kama utazuia herufi ya kawaida - hakitakuwa na jambo baya litakalotokea - bado itaashiria yenyewe. Isipokuwa - nambari, haziwezi kuzuiwa.
Mara nyingi huwa na shaka, ikiwa herufi fulani ni maalum. Wengine hufika kwenye hatua ya kuzuia herufi zote zenye tuhuma mfululizo. Hata hivyo, hii ni tabia mbaya (inachafua usanifu kwa mishale ya nyuma).
Ni alama maalum: $ ^ . * + ? \
/ {} [] () |
Si alama maalum: @ : , ' " ;
- _ = < > % # ~ `& !
Kazi za vitendo
Umepewa mfuatano:
javascriptlet str = 'a.a aba aea';
Andika usanifu, ambayo itapata mfuatano
'a.a', bila kuvuta mingine.
Umepewa mfuatano:
javascriptlet str = '2+3 223 2223';
Andika usanifu, ambayo itapata mfuatano
'2+3', bila kuvuta mingine.
Umepewa mfuatano:
javascriptlet str = '23 2+3 2++3 2+++3 345 567';
Andika usanifu, ambayo itapata mifuatano
'2+3', '2++3', '2+++3',
bila kuvuta mingine (+ inaweza kuwa idadi yoyote
ya herufi).
Umepewa mfuatano:
javascriptlet str = '23 2+3 2++3 2+++3 445 677';
Andika usanifu, ambayo itapata mifuatano
'23', '2+3', '2++3',
'2+++3', bila kuvuta mingine.
Umepewa mfuatano:
javascriptlet str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';
Andika usanifu, ambayo itapata mifuatano
'*q+', '*qq+', '*qqq+',
bila kuvuta mingine.
Umepewa mfuatano:
javascriptlet str = '[abc] {abc} abc (abc) [abc]';
Andika usanifu, ambayo itapata mifuatano
kwenye mabano mraba na ivabadilishe kwa '!'.