Nasıl kullanılır?
- Deseni eğik çizgiler olmadan yazın. Örnek, 2026-11-10 biçimindeki tarihleri bulur.
- İhtiyacınız olan bayrakları işaretleyin. g her eşleşmeyi bulur, i büyük ve küçük harf farkını yok sayar, m ve s satır sonlarının nasıl okunacağını değiştirir.
- Test metninizi yapıştırın. Eşleşmeler hemen vurgulanır; metnin altındaki listede her birinin konumu ve grupları yazar.
- Sonucu görmek için Şununla değiştir kutusuna bir metin yazın, ardından Kopyala düğmesine basın.
Eşleştirme burada nasıl çalışır?
Sayfa, tarayıcınıza yerleşik düzenli ifade motorunu kullanır; JavaScript'in kullandığı motor budur. Eşleşmeler metnin başından sonuna doğru sırayla bulunur. Gösterilen konum, eşleşmeden önce kaç karakter olduğudur ve 0'dan başlar; JavaScript'in metinleri saydığı gibi UTF-16 birimleriyle sayılır.
Arama, sayfanın yanıt verebilmesi için tarayıcınızın arka plandaki bir worker'ında çalışır. Arama 10.000 eşleşmeden sonra durur ve 200.000 karakterden uzun bir metin aranmaz. Boş bir eşleşme bulabilen desenler, örneğin x*, her boş eşleşmeden sonra bir karakter ilerler; böylece arama her zaman biter. 2 saniyeden uzun süren arama durdurulur; geri izleme bölümüne bakın.
- g bayrağı yoksa yalnızca ilk eşleşme gösterilir; String.match() da böyle çalışır.
- u bayrağı bir emojiyi ya da temel düzlem dışındaki her karakteri tek karakter olarak okur.
- d bayrağı listeye her grubun başlangıç ve bitiş konumunu ekler.
Felaket boyutunda geri izleme ve 2 saniye sınırı
Düzenli ifade motoru, bir desenin eşleşebileceği yolları teker teker dener. Bazı desenlerde, özellikle (a+)+ gibi bir tekrarlı grubun içinde bir tekrarlı grup varsa, yol sayısı çok hızlı büyür: metne eklenen her karakter işi yaklaşık iki katına çıkarabilir. Bu en çok metin neredeyse eşleşirken ama sonunda başarısız olurken yaşanır.
Örneğin (a+)+$ deseni, çok sayıda a harfi ve ardından bir ünlem işareti içeren bir metinde hiçbir zaman eşleşmez; çünkü $ metnin sonunu ister. Motor yine de harflerin bölünebileceği her yolu dener. Yirmi altı harfte arama tipik bir bilgisayarda bir saniye ya da daha uzun sürebilir ve her harf eklendiğinde çok daha yavaşlar. Süre cihaza göre değişir.
Bu sayfa her aramayı arka plandaki bir worker'da çalıştırır ve 2 saniye sonra durdurur; bir mesaj gösterir. Sayfanın geri kalanı çalışmaya devam eder; deseni ya da metni değiştirip yeniden deneyebilirsiniz.
- Aynı karakterler üzerinde bir tekrarı başka bir tekrarın içine koymayın: (a+)+$ yerine (a+)$ yazın. Aynı metinde güvenli desen hemen biter.
- Belirli olun: grubun içinde nokta (.) yerine [a-z] ya da \d+ kullanın; böylece eşleşmenin parçaları çok farklı biçimlerde örtüşemez.
- Önce desenizi metnin kısa bir örneğinde, sonra tam metinde deneyin.
- Mümkünse desenleri çapalayın: başta ^, sonda $ kullanın; motor her başlangıç noktasını denemek zorunda kalmaz.
Değiştirme desenleri
Değiştirme metni JavaScript'in String.replace() kurallarını izler. Dolar işareti, eşleşen metinle değiştirilen bir kod başlatır:
| Yazdığınız | Yerine geçen |
|---|---|
| $1, $2 ve benzeri | Numaralı grubun yakaladığı metin |
| $& | Eşleşmenin tamamı |
| $` | Eşleşmeden önceki metin |
| $' | Eşleşmeden sonraki metin |
| $$ | Tek bir dolar işareti |
| Dolar işareti, küçüktür işareti, grup adı ve büyüktür işareti | Adlandırılmış grubun yakaladığı metin |
PCRE ve .NET ile farklar
PCRE (PHP ve birçok Linux aracı) ya da .NET (C#, Visual Basic) için yazılmış bir desen çoğu zaman burada da çalışır; ancak bazı özellikler yalnızca motorlardan birinde vardır. Tabloda en önemli olanlar yer alır.
| Özellik | JavaScript (bu sayfa) | PCRE ve .NET |
|---|---|---|
| Atomik gruplar ve possessive niceleyiciler | Yok | Atomik gruplar PCRE ve .NET'te; a++ gibi possessive niceleyiciler yalnızca PCRE'de |
| \A, \Z ve \z çapaları | Yok: ^ ve $ kullanın | Var |
| (?P<…>) biçiminde adlandırılmış grup | Yok | PCRE'de var |
| Desen içinde (?i) gibi satır içi seçenek | Yok: bayrağı kullanın | .NET'te var |
| \K ile eşleşmeden metin çıkarma | Yok | PCRE'de var |
| Adlandırılmış grubu değiştirme | Dolar işareti, küçüktür işareti, ad, büyüktür işareti | .NET'te dolar işareti, süslü parantez, ad, süslü parantez |
Örnek: bir metinde üç tarih
Örnek desenin üç adlandırılmış grubu vardır: yıl için dört rakam, ay ve gün için ikişer rakam; aralarında tire bulunur. Metinde üç tarih vardır ve bunlar 14, 34 ve 50. konumlarda eşleşir; sayım ilk harfte 0'dan başlar.
Değiştirme metni gün, ay, yıl olarak üç grup adıyla yazılınca (her adı dolar işareti ile küçüktür ve büyüktür işaretleri arasında yazarak) üç tarih 10.11.2026, 03.12.2026 ve 15.01.2027 olur. Sonuç şöyle okunur: Fatura tarihi 10.11.2026, ödeme 03.12.2026. Son ödeme 15.01.2027.
Sık sorulan sorular
Bu araç hangi düzenli ifade türünü kullanır?
Tarayıcınıza yerleşik JavaScript motorunu kullanır. Arama, doğrulama ve metin temizleme için yazılmış desenlerin çoğu JavaScript, PCRE ve .NET'te aynı çalışır; ancak bazı özellikler farklıdır ve yukarıdaki bölümde listelenmiştir.
Liste neden 10.000 eşleşmede duruyor?
Eşleşmeler sırayla toplanır. Çok uzun bir liste hem çizilmesi yavaş hem okunması zor olurdu; bu yüzden bir desen daha sık eşleşirse ilk 10.000 eşleşme gösterilir ve aramanın durduğu bildirilir.
Metnim 200.000 karakterden uzunsa neden kabul edilmiyor?
Çok uzun bir metin sayfayı yavaşlatır ve bazı desenler uzun metinde çok zaman alır. Önce desenin metnin bir parçasında denenmesi, sonra geri kalanına bakılması ya da metnin daha küçük parçalara bölünmesi daha iyidir.
Vurgulama bazı eşleşmeleri neden atlıyor?
Hiç karakter içermeyen eşleşme, örneğin x*'in harfler arasında bulduğu boş yer, vurgulanacak bir şey içermez. Yine de listede konumuyla yer alır, nerede olduğunu görebilirsiniz.
Bu araç metnimi bir sunucuya gönderiyor mu?
Hayır. Eşleştirme tarayıcınızda yapılır; sayfa yazdıklarınızı saklamaz ve bir yere göndermez. Sayfayı kapattığınızda metin de silinir.
Geçersiz desen mesajı ne anlama geliyor?
Desen JavaScript düzenli ifadesi olarak okunamıyor demektir. Mesaj motordan gelir, İngilizcedir ve sorunu gösterir; örneğin kapanmayan bir parantez gibi.
PCRE ya da .NET için yazdığım deseni burada test edebilir miyim?
Çoğu zaman evet, yalnızca yaygın özellikler kullanıyorsa. Atomik grup, possessive niceleyici, \A ya da \z ya da satır içi seçenek varsa o kısmı önce JavaScript için yeniden yazın; hangi özelliklerin farklı olduğunu tablo gösterir.
Sayfa neden desenin çok uzun sürdüğünü söylüyor?
Arama bu metinde 2 saniye içinde bitmedi, bu yüzden sayfa onu durdurdu. Genellikle (a+)+ gibi, bir tekrarın içinde bir tekrar bulunan ve neredeyse eşleşen bir metinde çalışan bir desen bunun nedenidir. Felaket boyutunda geri izleme bölümünde daha güvenli bir biçim gösterilir.
Kaynaklar
- MDN: JavaScript düzenli ifadeleri, bayraklar ve gruplar (İngilizce)
- MDN: String.prototype.replace(), değiştirme desenleri (İngilizce)
- PCRE2 desen sözdizimi (PCRE belgeleri, İngilizce)
- Microsoft: .NET düzenli ifade dili hızlı başvuru (İngilizce)
Rakamlar ve metin en son 10 Kasım 2026 Salı tarihinde kontrol edildi.