⊗jsSpREESCh 99 of 294 menu

JavaScript тұрақты өрнектерінде арнайы таңбаларды экранизациялау

Біз арнайы таңбаның өзін білдіруін қалаймыз деп алайық. Ол үшін оны кері слешпен экранизациялау керек. Мысалдармен қарастырайық.

Мысал

Келесі мысалда тұрақты өрнектің авторы іздеу үрдісінің мынадай болғанын қалаған: 'a' әрпі, содан кейін плюс '+', содан кейін 'x' әрпі. Алайда, код авторы '+' таңбасын экранизацияламаған, сондықтан іздеу үрдісі шын мәнінде мынадай: 'a' әрпі бір немесе одан да көп рет, содан кейін 'x' әрпі:

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

Нәтижесінде айнымалыға мыналар жазылады:

'a+x ! ! !'

Мысал

Ал енді автор плюсті кері слешпен экранизациялаған. Енді іздеу үрдісі қалағандай болды: 'a' әрпі, содан кейін плюс '+', содан кейін 'x' әрпі.

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

Нәтижесінде айнымалыға мыналар жазылады:

'! ax aax aaax'

Мысал

Бұл мысалда үрдіс мынадай: 'a' әрпі, содан кейін нүкте '.', содан кейін 'x' әрпі:

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

Нәтижесінде айнымалыға мыналар жазылады:

'! abx azx'

Мысал

Келесі мысалда автор нүктені экранизациялауды ұмытып қойған, сондықтан тұрақты өрнек барлық жол тармақтарына сәйкес келді, себебі экранизацияланбаған нүкте кез келген таңбаны білдіреді:

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

Нәтижесінде айнымалыға мыналар жазылады:

'! ! !'

Ескерту

Егер сіз нүкте үшін кері слешті ұмытып қалсаңыз (ол өзін білдіруі керек болған кезде) - мұны байқамауыңыз мүмкін:

'a.x'.replace(/a.x/g, '!'); // '!' қайтарады, біз қалағанымыздай

Визуалды түрде дұрыс жұмыс істейді (себебі нүкте кез келген таңбаны білдіреді, соның ішінде қарапайым нүктені '.'). Бірақ егер ауыстырулар жүретін жолды өзгертсек - біз өз қатемізді көреміз:

'a.x abx azx'.replace(/a.x/g, '!'); // '! ! !' қайтарады, бірақ '! abx azx' күтілген еді

Арнайы таңбалар мен қарапайым таңбалардың тізімі

Егер қарапайым таңбаны экранизацияласаңыз - ешқандай қатері жоқ - ол бәрібір өзін білдіреді. Ерекшелік - сандар, оларды экранизациялауға болмайды.

Жиі берілген таңбаның арнайы болып табылатынына күмән туады. Кейбіреулер күдікті таңбалардың барлығын қатарынан экранизациялауға дейін барады. Алайда, бұл нашар тәжірибе (тұрақты өрнекті кері слештермен тұңып қалады).

Арнайы таңбалар: $ ^ . * + ? \ / {} [] () |

Арнайы таңбалар емес: @ : , ' " ; - _ = < > % # ~ `& !

Практикалық тапсырмалар

Жол берілген:

let str = 'a.a aba aea';

'a.a' жолын табатын, басқаларын қоспайтын тұрақты өрнек жазыңыз.

Жол берілген:

let str = '2+3 223 2223';

'2+3' жолын табатын, басқаларын қоспайтын тұрақты өрнек жазыңыз.

Жол берілген:

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

'2+3', '2++3', '2+++3' жолдарын табатын, басқаларын қоспайтын тұрақты өрнек жазыңыз (+ кез келген саны болуы мүмкін).

Жол берілген:

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

'23', '2+3', '2++3', '2+++3' жолдарын табатын, басқаларын қоспайтын тұрақты өрнек жазыңыз.

Жол берілген:

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

'*q+', '*qq+', '*qqq+' жолдарын табатын, басқаларын қоспайтын тұрақты өрнек жазыңыз.

Жол берілген:

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

Шаршы жақшадағы жолдарды тауып, оларды '!'-ге ауыстыратын тұрақты өрнек жазыңыз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართული한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау