Аломатҳои махсусро дар регуляриҳои JavaScript экран кардан

Фарз мекунем, ки мо мехоҳем ба тавре созем, ки аломати махсус худро ифода кунад. Барои ин онро бо истифода аз качаки баръакс экран кардан лозим аст. Биёед ба мисолҳо назар андозем.

Мисол

Дар мисоли оянда муаллифи регуляри мехост, ки намунаи ҷустуҷӯ инчунин намоён шавад: ҳарф 'a', сипас аломати қошиш '+', сипас ҳарф 'x'. Аммо, муаллифи рамз аломати '+'-ро экран накардааст ва аз ин рӯ намунаи ҷустуҷӯ дар асл ба ин шакл аст: ҳарфи 'a' як ё зиёда маротиба, баъд ҳарфи 'x':

javascriptlet str = 'a+x ax aax aaax';
let res = str.replace(/a+x/g, '!');

Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:

javascript'a+x ! ! !'

Мисол

Ва ҳоло муаллиф аломати қошишро бо качаки баръакс экран кардааст. Акнун намунаи ҷустуҷӯ ба сурати дуруст намоён мешавад: ҳарф 'a', сипас аломати қошиш '+', сипас ҳарф 'x'.

javascriptlet str = 'a+x ax aax aaax';
let res = str.replace(/a\+x/g, '!');

Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:

javascript'! ax aax aaax'

Мисол

Дар ин мисол намуна ба ин шакл аст: ҳарф 'a', сипас нуқта '.', сипас ҳарф 'x':

javascriptlet str = 'a.x abx azx';
let res = str.replace(/a\.x/g, '!');

Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:

javascript'! abx azx'

Мисол

Дар мисоли оянда муаллиф качакро экран карданро фаромӯш кардааст ва зери регуляри ҳама зерҳафтаҳо гирифта шуданд, зеро нуқтаи ғайриэкраншуда ҳар гуна аломатро ифода мекунад:

javascriptlet str = 'a.x abx azx';
let res = str.replace(/a.x/g, '!');

Дар натиҷа ба тағйирёбандаи зерин сабт мешавад:

javascript'! ! !'

Тавзеҳ

Ба ин диққат диҳед, ки агар шумо качаки баръаксро барои нуқта фаромӯш кунед (вақте ки он бояд худро ифода кунад) - инро ҳатто мумкин аст надида гиред:

javascript'a.x'.replace(/a.x/g, '!'); // '!'-ро бармегардонад, ҳамон тавре ки мо мехостем

Бо назар дуруст кор мекунад (зеро нуқта ҳар гуна аломатро, аз ҷумла нуқтаи оддии '.' ифода мекунад). Аммо агар сатрро иваз кунем, ки дар он иваз карданҳо рух медиҳад - мо хатои худро хоҳем дид:

javascript'a.x abx azx'.replace(/a.x/g, '!'); // '! ! !'-ро бармегардонад, аммо '! abx azx' интизор мерафт

Рӯйхати аломатҳои махсус ва оддӣ

Агар аломати оддиро экран кунед - ҳеҷ чизи бад рӯй намедиҳад - он ҳамон тавр худро ифода хоҳад кард. Истисно - рақамҳо, онҳоро экран кардан мумкин нест.

Аксар вақт шак ба миён меояд, ки оё ин аломат махсус аст. Баъзеҳо то он ҷо мераванд, ки ҳамаи аломатҳои гумоннокро пай дар пай экран мекунанд. Аммо, ин амалиёти нописанд аст (регуляриро бо качакҳои баръакс партов мекунад).

Аломатҳои махсус мебошанд: $ ^ . * + ? \ / {} [] () |

Аломатҳои махсус нестанд: @ : , ' " ; - _ = < > % # ~ `& !

Масъалаҳои амалӣ

Задание 1

Сатр дода шудааст:

javascriptlet str = 'a.a aba aea';

Регулярие нависед, ки сатри 'a.a'-ро ёбад, дигаронро нагирад.

Задание 2

Сатр дода шудааст:

javascriptlet str = '2+3 223 2223';

Регулярие нависед, ки сатри '2+3'-ро ёбад, дигаронро нагирад.

Задание 3

Сатр дода шудааст:

javascriptlet str = '23 2+3 2++3 2+++3 345 567';

Регулярие нависед, ки сатрҳои '2+3', '2++3', '2+++3'-ро ёбад, дигаронро нагирад (+ метавонад ҳар қадар бошад).

Задание 4

Сатр дода шудааст:

javascriptlet str = '23 2+3 2++3 2+++3 445 677';

Регулярие нависед, ки сатрҳои '23', '2+3', '2++3', '2+++3'-ро ёбад, дигаронро нагирад.

Задание 5

Сатр дода шудааст:

javascriptlet str = '*+ *q+ *qq+ *qqq+ *qqq qqq+';

Регулярие нависед, ки сатрҳои '*q+', '*qq+', '*qqq+'-ро ёбад, дигаронро нагирад.

Задание 6

Сатр дода шудааст:

javascriptlet str = '[abc] {abc} abc (abc) [abc]';

Регулярие нависед, ки сатрҳои дар қафаскҳои квадратӣ ёфташударо бо '!' иваз кунад.