Regex Yoxlayıcısı
Requlyar ifadəni mətninizdə canlı işıqlandırma, nömrəli və adlı qruplar və əvəzləmə önizləməsi ilə yoxlayın — JavaScript-in öz mühərriki ilə və faciəvi geri dönüşlə donan nümunələr üçün söndürmə açarı ilə: səhifə heç vaxt donmur.
Nümunə dili üçün oxu cədvəli
| Parça | Mənası | Qeyd |
|---|---|---|
\d \w \s | rəqəm, söz simvolu, boşluq | böyük hərflər inkar edir: \D qeyri-rəqəmdir |
+ * ? | bir və çox, sıfır və çox, istəyə bağlı | tənbəl variant üçün sonuna ? |
{2,5} | ikidən beşə qədər təkrar | {2,} — iki və çox |
[abc] [^abc] | bunlardan biri, heç biri | [a-z0-9] kimi aralıqlar |
(x) (?:x) (?<n>x) | tutma, tutmayan qrup, adlı tutma | qiymət lazım deyilsə (?:) seçin |
^ $ \b | başlanğıc, son, söz sərhədi | m ilə — hər sətirdə |
(?=x) (?!x) | ardınca gələn, gəlməyən | sıfır enli — heç nə udmurlar |
Regex baqlarının çoxunun qarşısını alan iki vərdiş
Nəzərdə tutduğunuzu lövbərləyin. Lövbərsiz nümunə
mətnin istənilən yerində uyğun gəlir: \d{4} on altı
rəqəmli kart nömrəsinin içində dörd rəqəmi məmnuniyyətlə tapır.
Yoxlama nümunələri demək olar həmişə ətrafında ^…$
istəyir. Yapışdırdığınızı ekranlayın. On dörd simvol
operatordur; domen adındakı nöqtə və telefon nömrəsindəki plyus
\. və \+ yazılmasa nümunənin mənasını
səssizcə dəyişir.
Uyğunlaşdırma yerli worker axınında gedir; nə nümunə, nə mətn brauzerinizdən çıxmır.
Tez-tez verilən suallar
Bu hansı regex dialektidir?
Tam olaraq JavaScript-inki — alət nümunənizi brauzerin öz mühərrikindən keçirir; burada uyğun gələn kodunuzda, Node skriptlərində və brauzer DevTools-da da uyğun gələcək. Sintaksisin çoxu PCRE ilə ortaqdır, amma lookbehind dəstəyi, \p{…} sinifləri (u bayrağı ilə) və adlı qruplar məhz ECMAScript standartına uyğundur.
Bayraqlar nə edir?
g birincini yox, hər uyğunluğu tapır; i böyük-kiçik hərfə baxmır; m ^ və $-ı yalnız mətnin uclarında yox, hər sətir sınığında işlədir; s nöqtəyə yeni sətirdən keçməyə imkan verir; u kod-nöqtə rejiminə keçir — bir emoji bir simvol olur və \p{Letter} sinifləri işləyir. Bayraq kombinasiyası nümunənin mənasının hissəsidir: eyni ifadə m ilə və m-siz tamam fərqli şeylərə uyğun gələ bilər.
Alət nümunəmi niyə iki saniyədən sonra dayandırdı?
Faciəvi geri dönüş (catastrophic backtracking): (a+)+$ kimi nümunə uzun a-lar zənciri üstəgəl bir b-də mühərriki uğursuzluğa qərar verməzdən əvvəl a-ları bölməyin eksponensial sayda yolunu sınamağa məcbur edir. Alət uyğunlaşdırmanı ayrıca axında işlədir və iki saniyədən sonra öldürür — istehsalat kodunuzda eyni nümunə sadəcə asılıb qalardı; bu, əsl xidmətdən-imtina sinfidir (ReDoS). Çarə strukturu dəyişməkdir ki, alternativlər eyni mətni yenidən bölə bilməsin: (a+)+ kimi iç-içə kvantifikatorları tək a+ ilə əvəz edin, üst-üstə düşən vayldkardlar əvəzinə açıq simvol sinifləri işlədin.
Boş uyğunluq nədir və niyə hər mövqedə çıxır?
Sıfır simvola uyğun gələ bilən nümunə — a*, \b, (?=x) — heç nə udmadan uğur qazanır; g bayrağı ilə tətbiq olunduğu hər mövqedə bir dəfə uğur qazanır. Alət bunları nazik kursor xətti ilə işarələyir. Onlar qanunidir (lookahead-lər və lövbərlər belə işləyir), amma çox vaxt kvantifikatorun * yox, + olmalı olduğuna işarədir.
Tutulan qrupları əvəzləmədə necə işlədim?
Əvəzedici xanası String.replace sintaksisi ilə danışır: nömrəli qruplar üçün $1–$9, adlılar üçün $<ad>, bütöv uyğunluq üçün $&, hərfi dollar üçün $$. İştirak etməyən qrup boş sətir kimi əvəzlənir — qruplar sütununda tire ilə görünür.
Mətnim və ya nümunəm hara yüklənir?
Heç yerə — uyğunlaşdırma tamamilə brauzerinizdə, öz maşınınızdakı worker axınında gedir. Loq sətirləri, konfiq faylları və nümunə yoxlanan digər mətnlər məhz səyahət etməməli datadır; burada heç vaxt etmir.
Oxşar alətlər
- Diaqram və Blok-sxem QurucusuBlok-sxem və diaqram çəkin, qutuları özü marşrutlaşan oxlarla birləşdirin, düzülüşü avtomatik qurdurun. SVG ixracı var.
- Şifrə GeneratoruBrauzerin kriptoqrafik təsadüfi say generatoru ilə güclü şifrələr yaradın, gücünü dərhal görün.
- HTML Entity ÇeviriciMətni HTML üçün kodlayın və ya entity-ləri geri açın — markap pozucuları, adlı dəstlər, emojiyə qədər rəqəmsal istinadlar. Düz bir dəfə açır.