⊗jsSpRELAB 133 of 294 menu

JavaScript muntazam ifodalarda pozitiv va negativ tekshiruv

Ba'zan quyidagi turdagi masalani hal qilish kerak bo'ladi: satrni 'aaa' toping va uni '!' bilan almashtiring, lekin faqat 'aaa' dan keyin 'x' turgan paytda, 'x' ning o'zini esa almashtirmang. Agar biz bu masalani "to'g'ridan-to'g'ri" hal qilishga harakat qilsak, hech narsa chiqmaydi:

'aaax baaa'.replace(/aaax/g, '!'); // '! baaa' qaytaradi, lekin biz '!x baaa' ni xohlaymiz

Oldinga qarash

Masalani hal qilish uchun 'x' ni almashtirish kerak emasligini aytish usuli kerak. Buning uchun (?= ) maxsus qavslari ishlatiladi, ular shunchaki tekshiradi, lekin o'zlashtirmaydi.

Bu qavslar oldinga pozitiv qarash deb ataladi. Pozitiv - chunki 'x' (bizning holatda) bo'lishi kerak - faqat shunda almashtirish amalga oshadi.

Keling, ushbu qavslarni bizning masalamizni hal qilish uchun qo'llaymiz:

'aaax aaab'.replace(/aaa(?=x)/g, '!'); // '!x aaab' qaytaradi

Shuningdek, oldinga negativ qarash - (?! ) - mavjud. U, aksincha, biror narsa bo'lmasligi kerakligini bildiradi. Quyidagi misolda, almashtirish faqat 'aaa' dan keyin 'x' bo'lmaganda amalga oshadi:

'aaax aaab'.replace(/aaa(?!x)/g, '!'); // 'aaax !b' qaytaradi

Orqaga qarash

Xuddi shunday, orqaga pozitiv qarash - (?<= ) mavjud. Quyidagi misolda almashtirish faqat 'aaa' dan oldin 'x' turganida amalga oshadi:

'xaaa'.replace(/(?<=x)aaa/g, '!'); // 'x!' qaytaradi

Shuningdek, orqaga negativ qarash - (?<! ) ham mavjud. Quyidagi misolda almashtirish faqat 'aaa' dan oldin 'x' bo'lmaganda amalga oshadi:

'baaa'.replace(/(?<!x)aaa/g, '!'); // 'b!' qaytaradi

Amaliy masalalar

Funksiya nomlarini o'z ichiga olgan satr berilgan:

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

Satzdan funksiya nomlari massivini oling.

Teg bilan satr berilgan:

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

Ushbu tegning atribut nomlari massivini oling.

O'zgaruvchilar bilan satr berilgan:

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

Oldida dollar belgisi turgan pastki satrlarni oling.

msbyuzluzcpt