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:
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:
| Metod | Tavsif |
|---|---|
match(regex) | Natijalar massivini qaytaradi. |
replace(regex) | Yangi matn (string) qaytaradi. |
search(regex) | Birinchi moslik indeksini qaytaradi. |
match() bilan ishlatish
let text = "Visit W3Schools";
let n = text.match(/W3schools/);replace() bilan ishlatish
let text = "Visit Microsoft!";
let result = text.replace(/Microsoft/i, "W3Schools");search() bilan ishlatish
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.
let text = "Qora, oq, qizil, yashil, ko'k, sariq.";
let result = text.match(/qizil|yashil|ko'k/g);3. Regex Flaglari
/shablon/flaglarFlaglar — bu shablonning ishlash rejimini o'zgartiradigan parametrlar.
| Flag | Tavsif |
|---|---|
/g | Global qidiruv (barcha mosliklarni topadi). |
/i | Katta-kichik harfga befarq (case-insensitive) qidiruv. |
/u | Unicode qo'llab-quvvatlashni yoqadi (ES2015 dan beri). |
/g flagi (Global)
/g flagi faqat birinchisini emas, barcha mosliklarni topadi.
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.
let text = "Visit W3Schools";
const pattern = /w3schools/i;
let result = text.match(pattern);4. Metabelgilar (Metacharacters)
// 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.
| Meta | Tavsif |
|---|---|
\d | Raqamlarga (digits) mos keladi. |
\w | So'z belgilariga (word characters: a-z, A-Z, 0-9, _) mos keladi. |
\s | Bo'sh joylarga (spaces) mos keladi. |
\d metabelgisi (raqamlar)
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.
let text = "100% bering!";
const pattern = /\w/g;
let result = text.match(pattern);5. Kvantifikatorlar (Quantifiers)
// Kamida bitta nolni topish
const pattern = /0+/;Kvantifikatorlar — nechta belgi yoki ifodaga mos kelish kerakligini belgilaydi.
| Kod | Tavsif |
|---|---|
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.
let text = "1, 100 yoki 1000?";
const pattern = /10?/g;
let result = text.match(pattern);6. Tasdiqlar (Assertions)
// Matn boshiga moslik
const pattern = /^W3Schools/;
// Matn oxiriga moslik
const pattern2 = /W3Schools$/;Tasdiqlar — chegaralar (boundaries) va ko'rib chiqishlar (lookarounds) bilan moslikni tekshiradi.
| Sintaksis | Nomi | Tavsif |
|---|---|---|
^ | Matn chegarasi | Matn boshiga mos keladi. |
$ | Matn chegarasi | Matn oxiriga mos keladi. |
\b | So'z chegarasi | So'z boshi yoki oxiriga mos keladi. |
(?=...) | Lookahead | Keyingi matnga mos keladi. |
(?<=...) | Lookbehind | Oldingi matnga mos keladi. |
^ metabelgisi
^ metabelgisi matnning boshiga mos keladi.
const pattern = /^W3Schools/;
let text = "W3Schools Tutorial";
let result = pattern.test(text); // trueconst pattern = /^W3Schools/;
let text = "Hello W3Schools";
let result = pattern.test(text); // false$ metabelgisi
$ metabelgisi matnning oxiriga mos keladi.
const pattern = /W3Schools$/;
let text = "Hello W3Schools";
let result = pattern.test(text); // trueconst pattern = /W3Schools$/;
let text = "W3Schools tutorial";
let result = pattern.test(text); // false7. Belgilar sinflari (Character Classes)
// Raqamlarni topish
const pattern = /[0-9]/;Belgilar sinflari — kvadrat qavslar [] ichiga olingan belgilardir. Ular to'plamdagi istalgan belgiga mos keladi.
| Sinf | Tavsif |
|---|---|
[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. |
let text = "1000 martadan ko'proq";
const pattern = /[0-9]/g;
let result = text.match(pattern);