UltKit

Regex Test Aracı

Bir kalıp yazın, ihtiyacınız olan bayrakları işaretleyin ve metninizi yapıştırın: her eşleşme siz yazarken vurgulanır, konumu ve yakalama gruplarıyla birlikte listelenir. Kalıp, tarayıcınızın kendi JavaScript regex motorunda çalışır; böylece sonuçlar kodunuzdakiyle aynı olur ve metin cihazınızdan çıkmaz.

Bayraklar

0 karakter · 0 kelime · 0 satır

Eşleşmeler burada vurgulanır.

0 karakter · 0 kelime · 0 satır

Tamamen bu tarayıcı sekmesinde çalışır. Metniniz asla yüklenmez veya saklanmaz.

JavaScript regex belirteçleri

İlk eşleşme sütunu, her desenin metnine bu sayfayı oluşturan JavaScript motoruyla uygulanmasıyla üretildi.

BelirteçAnlamıDesenMetinİlk eşleşme
\dRakam 0–9/\d+/Order 66 shipped66
\wHarf, rakam veya alt çizgi (ASCII)/\w+/snake_case-idsnake_case
\sSekme ve satır sonları dahil boşluk karakteri/\s+/two spaces
.Satır sonu dışında herhangi bir karakter (s yoksa)/a.c/abc a-cabc
^ $Girdinin başı ve sonu (m ile satırın)/^\w+$/singlesingle
[abc]Listelenen karakterlerden biri/[aeiou]/rhythm and bluesa
[^abc]Listelenmeyen herhangi bir karakter/[^0-9]+/2026-10-18-
* + ?0 veya daha fazla, 1 veya daha fazla, 0 veya 1/colou?r/color colourcolor
{n,m}n ile m kez arası/\d{2,4}/7 42 1999 12345642
(…)Yakalayan grup/(\d+)px/width: 320px320px
(?<name>…)Adlandırılmış yakalayan grup/(?<h>\d\d):(?<m>\d\d)/at 09:4509:45
(?:…)Yakalamayan grup/(?:ab)+/ababab!ababab
a|bİki taraftan biri/cat|dog/hotdogdog
\bKelime sınırı/\bcat\b/concat catcat
(?=…)Ardından gelen (lookahead)/\d+(?=%)/50 of 75%75
(?<!…)Öncesinde olmayan (negatif lookbehind)/(?<!\$)\b\d+/$30 or 4040
\p{L}Herhangi bir Unicode harfi (u gerekir)/\p{L}+/unaïve 東京naïve

Altı bayrak ve neyi değiştirdikleri

g (global) ilk eşleşmede durmak yerine tüm eşleşmeleri bulur; olmadan listede tek kayıt bulunur. i büyük/küçük harf ayrımını yok sayar. m (multiline) ^ ve $ işaretlerinin yalnızca metnin başında ve sonunda değil, her satırın başında ve sonunda eşleşmesini sağlar; satır sonundaki boşluklar gibi desenler için gereken budur. s (dotAll, ES2018 ile geldi) . işaretinin satır sonlarıyla da eşleşmesini sağlar. u (unicode) metni kod noktaları olarak ele alır, böylece bir emoji tek karakter sayılır ve herhangi bir yazı sistemindeki tüm harfler için \p{L} gibi özellik kaçışlarını etkinleştirir. y (sticky) yalnızca geçerli konumda eşleşir; belirteç ayrıştırıcılarının (tokenizer) kullandığı moddur. JavaScript'te ayrıca eşleşme indeksleri için d ve sınıflarda küme işlemleri için v bayrakları da vardır; bu test aracı yukarıdaki altı bayrakla sınırlıdır.

Test metninin altında her eşleşme için dizini ve grupları gösterilir. Numaralı gruplar düz parantezlerden gelir, (?:…) yakalamadan gruplar, (?<year>\d{4}) ise adıyla görünen adlandırılmış bir grup oluşturur; ISO tarih örneği bunu gösterir. Yaygın desenler menüsü e-posta adresleri, URL'ler, IPv4 adresleri, hex renkler, UUID'ler, tekrarlanan kelimeler ve satır sonu boşlukları için denenmiş başlangıç noktaları ekler. E-posta desenini doğrulama değil, kaba bir kontrol olarak görün: tam adres dil bilgisi çok daha esnektir ve gerçek sınama bir ileti göndermektir.

Lookbehind ve felaket boyutunda geri izleme

Bakış yönlü ifadeler (lookaround), bir konumun çevresini tüketmeden sınar. İleri bakış, (?=…) ve (?!…), JavaScript'te her zaman vardı; geri bakış, (?<=…) ve (?<!…), ES2018 ile geldi ve Safari 16.4'ün 2023'te desteklemesiyle tüm büyük tarayıcılara ulaştı. Böylece (?<=\$)\d+, "$42" içinde dolar işaretini almadan 42'yi bulur. Birçok diğer motordan farklı olarak JavaScript, her uzunlukta geri bakışa izin verir.

JavaScript motoru geri izlemelidir (backtracking): bir yol başarısız olunca geri döner ve alternatifleri dener. (a+)+$ gibi iç içe niceleyiciler aynı metni bölmek için üstel sayıda yol sunar; bu yüzden 30 tane a ve ardından bir x içeren dizi saniyelerce, birkaç harf daha eklenirse saatlerce sürebilir. Buna yıkıcı geri izleme denir ve sunucularda hizmet reddi saldırısı olan ReDoS'a dönüşür; bu kusura sahip tek bir WAF kuralı, 2 Temmuz 2019'da Cloudflare ağını yaklaşık yarım saat çökertti. Bu test aracı sekmenizde çalıştığından böyle bir desen sayfayı dondurabilir; sayfayı yenileyin ve iki niceleyicinin aynı karakterleri talep edememesi için deseni yeniden yazın: .* yerine [^,]* gibi daha dar sınıflar veya sabitleyiciler kullanın. Eşleştirme yerine metnin kendisini düzenlemek için metin araçlarına bakın; daha fazla geliştirici aracı geliştirici araçları sayfasındadır.

Sık sorulan sorular

Regex'im neden yalnızca bir eşleşme buluyor?
g bayrağı kapalıdır. Olmadan motor ilk eşleşmeden sonra durur. Her bulguyu listelemek için g'yi işaretleyin; y bayrağı tek başına da birkaç eşleşme bulur, ancak yalnızca birbirini doğrudan izleyenleri.
JavaScript'te \d başka yazı sistemlerindeki rakamlarla eşleşir mi?
Hayır. JavaScript'te \d yalnızca 0–9 anlamına gelir, \w ise u bayrağıyla bile yalnızca ASCII harfleri, rakamları ve alt çizgiyi kapsar. Diğer yazı sistemleri için u ile birlikte \p{Nd} veya \p{L} kullanın.
Burada test edilen bir kalıp Python veya PHP'de de aynı şekilde çalışır mı?
Temel söz dizimi aktarılır, ancak ayrıntılar farklıdır: Python'da adlandırılmış gruplar (?P<name>…) şeklinde yazılır, PHP ve Python JavaScript'te olmayan sahiplenici (possessive) niceleyicileri destekler ve geri bakış kuralları değişir. Hedef motorda yeniden test edin.
Gerçek bir nokta veya köşeli parantezle nasıl eşleşme yapılır?
Ters eğik çizgiyle kaçırın: \. noktayı, \[ ise açılış köşeli ayracını eşleştirir. Karakter sınıfı içinde çoğu simge zaten düz karakterdir, dolayısıyla [.] da yalnızca noktayla eşleşir.
Kalıp yazarken sayfa neden dondu?
Desen büyük olasılıkla metninizde yıkıcı geri izlemeyi tetikledi. Sayfayı yenileyin, ardından (.*)* veya (a+)+ gibi iç içe niceleyicilerden kaçının ve her parçanın mümkün olduğunca az eşleşmesini sağlayın.