Regex brauzeringizda qanday ishlaydi?
Har bir JavaScript ish vaqti yerli muntazam ifoda dvigatelini birga olib keladi — new RegExp(pattern, flags) namunangizni kompilyatsiya qiladi, so‘ngra String.prototype.match, String.prototype.replace va RegExp.prototype.exec kabi metodlar uni har qanday kirish qatoriga qarshi ishga tushiradi. Ushbu test vositasi o‘sha dvigatelni interfeysga o‘rab oladi, shuning uchun namunalarni brauzerni tark etmasdan tahrirlashingiz, ishga tushirishingiz va tekshirishingiz mumkin. Yozgan narsangizning hech biri — namuna, bayroqlar, sinov qatori yoki almashtirish — tarmoq orqali yuborilmaydi.
Regex test vositasi qanday ishlaydi?
Quvur liniya bir nechta qisqa qadamlardan iborat va barcha qadamlar har bir tugma bosilganda mijoz tomonida ishlaydi (yozish ravon qolishi uchun 150 ms debouncing bilan):
- Namunangizning tanasi yuqoridagi maydondan o‘qiladi (boshlang‘ich yoki yakuniy
/ajratuvchilari yo‘q — ular bezakli). Tanlangan bayroq tugmalarigiyokigimsuykabi bayroq qatorida birlashtiriladi. new RegExp(patternBody, flags)namunani kompilyatsiya qiladi. Agar dvigatelSyntaxErrortashlasa (masalan, juftlanmagan qavs yoki noto‘g‘ri qochish), xabar sinov qatori ustida ko‘rsatiladi va moslik ro‘yxati tozalanadi. Kompilyatsiya xatosi V8 / SpiderMonkey / JavaScriptCore'dan keladigan haqiqiyerr.messagebo‘lib, DevTools’da ko‘radiganingizga to‘g‘ri keladi.- Moslik ro‘yxati uchun vosita har doim sintetik global bayroq bilan ro‘yxatga oladi — shuning uchun
gni o‘chirsangiz ham ro‘yxat har bir moslikni ko‘rsatadi. Nol kenglikdagi mosliklarga qarshi standart himoya (if (m.index === rx.lastIndex) rx.lastIndex++) bo‘sh qatorga mos keladigan namunalarda tsikl aylanib qolmasligini ta'minlaydi. Almashtirish rejimi sizning haqiqiy bayroqlar to‘plamingizni hisobga oladi, shuning uchun$&String.prototype.replacebilan bir xil ishlaydi. - Har bir iteratsiya orasida vosita
performance.now() - startni tekshiradi va 50 ms o‘tganidan keyin bekor qiladi. Bu uzunaketma-ketligiga qarshi(a+)+$kabi kirishlarda halokatli orqaga qaytishdan himoya qiladi — aks holda yorliq qotib qolardi. Himoya mumkin qadar yaxshi ishlaydi: bitta moslik beradigan patologik namuna baribir bittaexecchaqiruvi ichida vaqtni sarflashi mumkin. Agar shunday bo‘lsa, yorliqni yangilang va namunani ochko‘z bo‘lmagan miqdorchi yoki atomik egalik uslubi (masalan,[^x]*x) bilan qayta yozing. - Sinov qatori har bir moslik oralig‘ida segmentlarga bo‘linadi va mos kelgan segmentlar
<mark class="rx-match rx-cap-N">elementlariga o‘raladi; bu yerdaNoltita palitra rangini aylanib chiqadi, shunda qo‘shni mosliklar bir qarashda osongina farqlanadi. Har bir moslikning raqamlangan guruhlari (m[1],m[2], …) va nomlangan guruhlari (m.groups) pastda yorliqli qatorlar sifatida chiqariladi; agardbayrog‘i yoqilgan bo‘lsa, har bir guruh uchun[start, end]indekslari ham ko‘rsatiladi.
Nega aynan shu regex test vositasi?
- Maxfiylik: har bir namuna, sinov qatori va almashtirish brauzeringizda o‘rnatilgan JavaScript RegExp dvigateli bilan ishlaydi. Hech narsa yorliqni tark etmaydi — kirish mijoz jurnali, sizib chiqqan hisob ma’lumoti namunasi yoki SaaS regex maydonchasiga joylashtirmaslik kerak bo‘lgan boshqa narsa bo‘lganda bu juda muhim.
- Halol ta’m: vosita aniq Node.js, Chrome, Safari, Firefox va brauzerga asoslangan har qanday forma validatori ishlatadigan regex dvigatelini ochib beradi. Nozik farqlarni yashiradigan Perl-ta'mga tarjima qatlami yo‘q — bu yerda ishlagan narsa kodingizda ham ishlaydi.
- Qamrov va nomlangan guruhni nosozlikdan tuzatish: har bir raqamli guruh (
$1,$2, …) va nomlangan guruh ($<year>) har bir moslik uchun ko‘rsatiladi, shuning uchun parser qurishingiz va slotlarni taxmin qilmasdan o‘qishingiz mumkin. Almashtirish rejimi guruhlarni erkin aralashtirishga imkon beradi —$2-$1dastlabki ikkita slotni almashtiradi,$<name>nomlangan slotni qo‘shadi va$&butun moslikni qaytaradi. - Halokatli orqaga qaytishdan himoya: ro‘yxatga olish ustidagi 50 ms cheklov
(a+)+$kabi patologik namunalarni yorliqni qotirishdan oldin bekor qiladi. Qotib qolgan brauzer o‘rniga tushuntiruvchi xato ko‘rasiz va sahifa darhol tiklanadi.
Regex test vositasining keng tarqalgan qo‘llanmalari qanday?
Muntazam ifodalar veb dasturlash, xavfsizlik va ma'lumotlar bilan ishlashda paydo bo‘ladi — bu vosita eng keng tarqalgan foydalanish stsenariylarini nishonga oladi:
- Forma tekshiruvi: e-pochta, telefon yoki pochta indeksi namunasini prototiplang, sinov qatoriga namuna kirishlarini joylashtiring va namunani ishlab chiqarish kodiga yuborishdan oldin har bir ijobiy holatning mos kelishi va har bir salbiy holatning mos kelmasligini tasdiqlang.
- Jurnal skraping: NGINX, ilova yoki audit jurnali chiqishining bir qismini joylashtiring, qiziqqan qismlaringiz uchun nomlangan guruhlar bilan namuna yozing (
(?<ip>…) (?<path>…)) va parseringizning to‘g‘riligini tasdiqlash uchun har moslikning qamrab olingan slotlarini o‘qing. - Refaktoringi uchun topish-va-almashtirish: snipetdagi identifikatorlarni qayta yozish uchun Almashtirish rejimidan foydalaning —
(\w+)\.set(\w+)\(→$1.$2 =setter chaqiruvlarini xususiyat tayinlashlariga aylantiradi va jonli oldindan ko‘rish, kodemodga kiritishdan oldin natijani ko‘rsatadi.
Regex namunasi qanday ko‘rinadi?
Quyidagi namunani oling: (\d{4})-(\d{2})-(\d{2}) g bayrog‘i bilan, release 2025-11-15, prerelease 2026-05-25 sinov qatoriga qarshi ishga tushirilgan. Dvigatel ikkita moslik topadi. Birinchi moslik 2025-11-15 — guruh 1 = 2025, guruh 2 = 11, guruh 3 = 15. Ikkinchi moslik 2026-05-25 — xuddi shu guruh shakli bilan. Almashtirish rejimida $3/$2/$1 almashtirish shabloni ikkala sanani 15/11/2025 va 25/05/2026 ga qayta yozadi — bitta namuna bilan ISO dan DMY ga konvertatsiya, uni skriptga ulashdan oldin vizual tarzda tekshirishingiz mumkin.
Ushbu test vositasidan har qanday regex ishi — namunalarni qurish, nosozliklarni tuzatish yoki qayta yozish — uchun tez yo‘l sifatida foydalaning. Hammasi mahalliy ravishda ishlaydi; hech narsa qayd etilmaydi; regex dvigateli — bu brauzeringiz olib keladigan dvigatel, shuning uchun xatti-harakatlar ishlab chiqarish kodi ish vaqtida ko‘radigan narsaga mos keladi.