Skip to content

JavaScript Muntazam Ifodalar (RegExp)

Muntazam ifoda (Regular Expression) — bu qidiruv shablonini hosil qiluvchi belgilar ketma-ketligidir.

Regex — bu muntazam ifodaning qisqartma nomi. JavaScript-da RegExp ob'ekti muntazam ifodalarni boshqarish uchun ishlatiladi.

Muntazam ifodalar quyidagi maqsadlarda qo'llaniladi:

  • Matnda qidirish
  • Matnni almashtirish
  • Matn tekshirish (validatsiya)

Misol

Matndagi "w3schools" so'zini katta-kichik harfga e'tibor bermasdan qidirish:

js
let text = "Visit W3Schools";
let n = text.search(/w3schools/i);

Tushuntirish:

  • /w3schools/i — bu muntazam ifoda.
  • w3schools — bu shablon (qidiriladigan matn).
  • i — bu modifikator (qidiruvni katta-kichik harfga befarq qiladi).

Muntazam ifoda sintaksisi

/shablon/flaglar;

1. String metodlari bilan ishlatish

Muntazam ifodalar ko'pincha quyidagi string metodlari bilan birga ishlatiladi:

MetodTavsif
match(regex)Natijalar massivini qaytaradi.
replace(regex)Yangi matn (string) qaytaradi.
search(regex)Birinchi moslik indeksini qaytaradi.

match() bilan ishlatish

js
let text = "Visit W3Schools";
let n = text.match(/W3schools/);

replace() bilan ishlatish

js
let text = "Visit Microsoft!";
let result = text.replace(/Microsoft/i, "W3Schools");

search() bilan ishlatish

js
let text = "Visit W3Schools";
let n = text.search(/W3Schools/);

2. Alternatsiya (YOKI — OR)

Muntazam ifodada alternatsiya | (vertikal chiziq) belgisi bilan ifodalanadi. U berilgan variantlarning istalganiga mos keladi.

js
let text = "Qora, oq, qizil, yashil, ko'k, sariq.";
let result = text.match(/qizil|yashil|ko'k/g);

3. Regex Flaglari

/shablon/flaglar

Flaglar — bu shablonning ishlash rejimini o'zgartiradigan parametrlar.

FlagTavsif
/gGlobal qidiruv (barcha mosliklarni topadi).
/iKatta-kichik harfga befarq (case-insensitive) qidiruv.
/uUnicode qo'llab-quvvatlashni yoqadi (ES2015 dan beri).

/g flagi (Global)

/g flagi faqat birinchisini emas, barcha mosliklarni topadi.

js
let text = "Is this all there is?";
const pattern = /is/g;
let result = text.match(pattern);

/i flagi (Case-Insensitive)

/i flagi katta-kichik harfga e'tibor bermasdan qidiradi: /abc/i "abc", "AbC", "ABC" ga mos keladi.

js
let text = "Visit W3Schools";
const pattern = /w3schools/i;
let result = text.match(pattern);

4. Metabelgilar (Metacharacters)

js
// So'zlarni topish
const pattern = /\w/;

Metabelgilar — bu maxsus ma'noga ega belgilardir. Ular raqamlar, so'zlar, bo'sh joylar va boshqalarni topish uchun ishlatiladi.

MetaTavsif
\dRaqamlarga (digits) mos keladi.
\wSo'z belgilariga (word characters: a-z, A-Z, 0-9, _) mos keladi.
\sBo'sh joylarga (spaces) mos keladi.

\d metabelgisi (raqamlar)

js
let text = "100% bering!";
const pattern = /\d/g;
let result = text.match(pattern);

\w metabelgisi (so'z belgilari)

So'z belgisi — bu a-z, A-Z, 0-9 va _ (pastki chiziq) belgilaridan birini o'z ichiga oladi.

js
let text = "100% bering!";
const pattern = /\w/g;
let result = text.match(pattern);

5. Kvantifikatorlar (Quantifiers)

js
// Kamida bitta nolni topish
const pattern = /0+/;

Kvantifikatorlar — nechta belgi yoki ifodaga mos kelish kerakligini belgilaydi.

KodTavsif
x*x ning nol yoki undan ko'p marta takrorlanishiga mos keladi.
x?x ning nol yoki bir marta takrorlanishiga mos keladi.
x{n}x ning aniq n marta takrorlanishiga mos keladi.

n? kvantifikatori

x? — nol yoki bir marta takrorlanishga mos keladi.

js
let text = "1, 100 yoki 1000?";
const pattern = /10?/g;
let result = text.match(pattern);

6. Tasdiqlar (Assertions)

js
// Matn boshiga moslik
const pattern = /^W3Schools/;

// Matn oxiriga moslik
const pattern2 = /W3Schools$/;

Tasdiqlar — chegaralar (boundaries) va ko'rib chiqishlar (lookarounds) bilan moslikni tekshiradi.

SintaksisNomiTavsif
^Matn chegarasiMatn boshiga mos keladi.
$Matn chegarasiMatn oxiriga mos keladi.
\bSo'z chegarasiSo'z boshi yoki oxiriga mos keladi.
(?=...)LookaheadKeyingi matnga mos keladi.
(?<=...)LookbehindOldingi matnga mos keladi.

^ metabelgisi

^ metabelgisi matnning boshiga mos keladi.

js
const pattern = /^W3Schools/;
let text = "W3Schools Tutorial";
let result = pattern.test(text); // true
js
const pattern = /^W3Schools/;
let text = "Hello W3Schools";
let result = pattern.test(text); // false

$ metabelgisi

$ metabelgisi matnning oxiriga mos keladi.

js
const pattern = /W3Schools$/;
let text = "Hello W3Schools";
let result = pattern.test(text); // true
js
const pattern = /W3Schools$/;
let text = "W3Schools tutorial";
let result = pattern.test(text); // false

7. Belgilar sinflari (Character Classes)

js
// Raqamlarni topish
const pattern = /[0-9]/;

Belgilar sinflari — kvadrat qavslar [] ichiga olingan belgilardir. Ular to'plamdagi istalgan belgiga mos keladi.

SinfTavsif
[a]Qavslar ichidagi belgiga mos keladi.
[abc]Qavslar ichidagi barcha belgilardan biriga mos keladi.
[a-z]a dan z gacha oraliq ichidagi belgiga mos keladi.
[0-9]0 dan 9 gacha oraliq ichidagi belgiga mos keladi.
js
let text = "1000 martadan ko'proq";
const pattern = /[0-9]/g;
let result = text.match(pattern);