JS RegExp guruhlari

ULASHISH

RegExp guruhlari

Oddiy ifoda guruhlari sizga bir nechta belgilarni bitta birlik sifatida ko‘rib chiqish, moslikning muayyan qismlarini ajratib olish yoki olingan matnga keyinroq murojaat qilish imkonini beradi.

Guruh sintaksislari

TuriSintaksisTavsif
Capturing(x)X ga mos keladi va olib tashlash yoki qayta havolalar uchun moslikni eslab qoladi
Named Capturing(?<name>x)X ga mos keladi va uni guruhlar xususiyatida ma’lum bir nom ostida saqlaydi
Non-Capturing(?:x)Guruhlarni x mantiqiy ravishda (masalan, miqdor ko‘rsatkichlari uchun) moslikni eslamasdan
Oldinga qarang(?=x)Agar naqshdan keyin x bo‘lsagina mos keladi
Orqaga qarang(?<=x)Naqsh oldidan x belgilansagina mos keladi
Bayroq(?flag:x)x uchun bayroq(lar)ni yoqadi
Bayroq(?flag-flag:x)x uchun bayroq(lar)ni o‘chiradi

RegExp ushlovchi guruhlar (x)

RegExp Capturing Groups eng keng tarqalgan guruhlardir. Ular naqshlarni birlashtiradi va keyinchalik foydalanish uchun mos keladigan matnni "eslab qoladi".

Ushlovchi guruhlar regexp shablonining bir qismini qavslarga (x) olish orqali yaratiladi.

Topilgan shablonlarga pattern.exec(matn) yoki matn.match(pattern) natija massivi orqali murojaat qilishingiz mumkin.

Misollar

let text = "Alice loves Bob-";
const pattern = /(\w+) loves (\w+)/;

let result = text.match(pattern);
O‘zingiz sinab ko‘ring »
let text = "Alice loves Bob-";
const pattern = /(\w+) loves (\w+)/;

let result = pattern.exec(text);
O‘zingiz sinab ko‘ring »

Explained

  • (\w+) bitta so‘zni ushlaydi
  • text.match(pattern) natijalar massivini qaytaradi
  • pattern.exec(text) ham natijalar massivini qaytaradi
  • To‘liq moslik 0 indeksida, qo‘lga kiritilgan guruhlar esa 1, 2, ... indeksida joylashgan.

Natija massivi

JavaScript’da text.match(regex) kabi metoddan foydalanganingizda, u natijalar massivini qaytaradi.

JavaScript massivlarida elementlar 0 dan boshlanadigan indekslar deb ataladigan raqamli pozitsiyalar bo‘yicha tartiblanadi. JavaScript avtomatik ravishda massivni shunday tartibga soladiki, butun mos keladigan matn birinchi o‘rinda ([0]) joylashadi va qavs guruhlaringizdagi matn ([1], [2], [3]) dan keyin keladi.

Misol

const regex = /(\d{4})-(\d{2})-(\d{2})/;
const text = "2026-05-21";
const match = text.match(regex);

// This is what the 'match' array actually contains:
[
"2026-05-21", // Index 0: The entire string that matched the whole regex
"2026", // Index 1: The text caught by the 1st set of parentheses
"05", // Index 2: The text caught by the 2nd set of parentheses
"21" // Index 3: The text caught by the 3rd set of parentheses
]

Nomlangan ushlovchi guruhlar (?<n>)

Nomlangan ushlovchi guruhlar ES2018’da joriy etilgan.

Nomlangan qo‘lga olish guruhlari indekslar o‘rniga guruhga nom berish imkonini beradi.

Ushlovchi guruhlardan foydalanilganda String metodi match() va RegExp metodi exec() groups xususiyatiga ega moslik obyektini qaytaradi. Bu xususiyat guruhlarning nomlari va qiymatlarini saqlaydi.

Misol

const text = "Name: John Doe";

// Using named capturing groups
const regex = /(?<firstName>\w+) (?<lastName>\w+)/;
const match = text.match(regex);

let fName = match.groups.firstName;
let lName = match.groups.lastName;
O‘zingiz sinab ko‘ring »

Explained

  • (?<firstName>\w+) so‘zni ushlaydi va unga firstName nomini beradi
  • (?<lastName>\w+) lastName uchun ham xuddi shunday qiladi
  • text.match() groups xususiyatiga ega massivni qaytaradi
  • match.groups() obyekt qaytaradi:
    {firstName:"John", lastName:"Doe" }

Ushlamaydigan guruhlar (?:...)

Ushlamaydigan guruhlar mantiqiy amallar (masalan, kvantifikatorni bir nechta belgiga qo‘llash) uchun ishlatiladigan shablonlar bo‘lib, mos kelgan matnni saqlamaydi.

Afzalliklari quyidagilardan iborat: ular yanada samaraliroq va agar siz olingan ma’lumotlar emas, balki faqat guruhlash harakati kerak bo‘lsa, qo‘lga olish guruhi indekslarini toza tuting.

Misol: /(?:ha)+/ "haha" ga mos keladi, lekin "ha" uchun alohida suratga olish yaratilmaydi.



RegExp guruh modifikatorlari (?flag)

(?bayroq) sintaksisi guruh o‘zgartiruvchisi (inline bayroq o‘zgartiruvchisi).

U bayroqlarni butun naqshga emas, balki naqshning bir qismiga o‘zgartirish imkonini beradi.

(?flags:pattern) bayroqlarni faqat guruhdagi naqsh uchun yoqadi.

Guruh modifikatorida faqat i, m va s bayroqlaridan foydalanish mumkin.

Misol

i bayrog‘i faqat naqshning W3Schools qismi uchun yoqilgan.

let text = "W3Schools tutorials.";
const pattern = /(?i:W3Schools) tutorials/;

// Returns true:
let result = pattern.test(text);
O‘zingiz sinab ko‘ring »

i bayrog‘i faqat naqshning W3Schools qismi uchun yoqilgan.

let text = "W3Schools Tutorials.";
const pattern = /(?i:W3Schools) tutorials/;

// Returns false:
let result = pattern.test(text);
O‘zingiz sinab ko‘ring »


Muntazam ifoda metodlari

Muntazam ifodalarni qidirish va almashtirish turli usullar bilan amalga oshirilishi mumkin.

Quyidagilar eng ko‘p tarqalganlaridir:

String metodlari

MetodTavsif
moslik (regex) Natijalar massivini qaytaradi
matchAll(regex) Natijalarning iteratorini qaytaradi
almashtirish (regex) Yangi Stringni qaytaradi
replaceAll(regex) Yangi Stringni qaytaradi
qidiruv (regex) Birinchi moslik indeksini qaytaradi
split(regex) Natijalar massivini qaytaradi

RegExp metodlari

MetodTavsif
regex.exec() Natijalarning iteratorini qaytaradi
regex.test() true yoki false qaytaradi

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!