⊗jsSpRELAB 133 of 294 menu

JavaScript ретіндегі позитивті және негативті іздеу

Кейде мынадай есепті шешу керек болады: 'aaa' жолын тауып, оны '!'-ге ауыстыру, бірақ тек егер 'aaa'-ден кейін 'x' тұрса, ал 'x'-тің өзін ауыстырмау керек. Егер біз есепті 'бас бармақ ережесімен' шешуге тырыссак, онда ештеңе шықпайды:

'aaax baaa'.replace(/aaax/g, '!'); // '! baaa' қайтарады, біз '!x baaa' деп қаладық

Алға іздеу

Есепті шешу үшін 'x'-ті ауыстыруға болмайды деп айтудың тәсілі керек. Бұл (?= ) арнайы жақшалары арқылы жасалады, олар тек қарап қана қойып, өздерімен бірге алмайды.

Бұл жақшалар алға қарай позитивті іздеу деп аталады. Позитивті - себебі 'x' (біздің жағдайда) болуы керек - сонда ғана ауыстыру орын алады.

Енді біздің есепті шешу үшін осы жақшаларды қолданайық:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // '!x aaab' қайтарады

Алға қарай негативті іздеу те бар - (?! ) - ол, керісінше, бір нәрсенің болмауы керек екенін білдіреді. Келесі мысалда ауыстыру тек егер 'aaa'-ден кейін 'x' ЕМЕС тұрғанда ғана орын алады:

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // 'aaax !b' қайтарады

Артқа іздеу

Сол сияқты артқа қарай позитивті іздеу бар - (?<= ). Келесі мысалда ауыстыру тек егер 'aaa'-ден бұрын 'x' тұрғанда ғана орын алады:

'xaaa'.replace(/(?<=x)aaa/g, '!'); // 'x!' қайтарады

Сондай-ақ артқа қарай негативті іздеу те бар - (?<! ). Келесі мысалда ауыстыру тек егер 'aaa'-ден бұрын 'x' тұрмағанда ғана орын алады:

'baaa'.replace(/(?<!x)aaa/g, '!'); // 'b!' қайтарады

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

Функция атауларын қамтитын жол берілген:

let str = 'func1() func2() func3()';

Жолдан функция атауларының массивін алыңыз.

Тегі бар жол берілген:

let str = '<a href="" class="eee" id="zzz">';

Осы тегтің атрибут атауларының массивін алыңыз.

Айнымалылар бар жол берілген:

let str = '$aaa $bbb $ccc xxxx';

Алдында доллар белгісі тұрған ішкі жолдарды алыңыз.

Қазақ
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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау