⊗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 ! ! !'

Мисол

Энди esa муаллиф плюсни тескари чиззиқ билан экранизация қилди. Энди излаш намунаси кераклидек кўринади: ҳарф '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' кутilган эди

Махсус белгилар ва оддий белгилар руйхати

Агар оддий белгини экранизация қилсангиз - ҳеч нарса бўлмайди - у барibir ўзини англатади. Истисно - рақамлар, уларни экранизация қилиб бўлмайди.

Кўпинча шубҳа туғилади, мана шу белги махсусми ёки йўқми. Бaъзилар барча шубҳали белгиларни кетма-кет экранизация қилишга ҳам yetadi. Аммо, бу ёмон амалиёт (регуляр ифодани тескари чиззиқлар билан тўлдиради).

Махсус белгилар hisoblanadi: $ ^ . * + ? \ / {} [] () |

Махсус белгилар hisoblanmaydi: @ : , ' " ; - _ = < > % # ~ `& !

Амалий масалалар

Сатр берилган:

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' сатрларни топадиган, бошқаларин олмайдиган регуляр ифода ёзинг (+ istalgancha бўлиши мумкин).

Сатр берилган:

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çeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш