%100 ücretsizkayıt yokdosya yüklenmez
  1. Araçlar
  2. Dosya

Regex (Düzenli İfade) Test Aracı

Desenizi yazın, test metninde eşleşmelerin canlı olarak vurgulandığını görün. Gruplar, adlandırılmış gruplar ve değiştirme sonucu anında listelenir; ağır desenler 2 saniyede güvenle durdurulur. Metniniz bilgisayarınızdan çıkmaz.

  • %100 ücretsiz
  • Kayıt yok
  • Dosya yüklenmez

Araç

Bayraklar
Vurgulu önizleme

    Düzenli ifade (regex) nedir?

    Düzenli ifade, yani kısaca regex, metin içinde belirli bir örüntüyü tarif etmeye yarayan küçük bir dildir. "Rakamlardan oluşan on bir haneli bir sayı", "@ işaretinden önce ve sonra harf içeren bir e-posta adresi" ya da "gün.ay.yıl biçiminde yazılmış tarih" gibi kuralları kısa bir ifadeyle yazabilir ve bu kuralı binlerce satırlık metne uygulayabilirsiniz. Programlama dillerinin neredeyse hepsi, metin editörlerinin çoğu, komut satırı araçları ve veritabanları regex desteği sunar. Bir formda girilen telefon numarasını doğrulamaktan, günlük dosyalarında hata satırlarını bulmaya, dışa aktarılmış bir listeyi toplu olarak düzeltmekten, web sitesinde adres yönlendirme kuralları yazmaya kadar çok geniş bir kullanım alanı vardır.

    Regex'in zorluğu, kısa yazılmasının okunabilirliği düşürmesidir. Tek bir karakter eksik ya da fazla olduğunda desen ya hiçbir şeyi bulmaz ya da beklemediğiniz şeyleri bulur. Bu yüzden desenleri uygulamanıza yerleştirmeden önce gerçek metin üzerinde denemek çok önemlidir. Bu araç tam olarak bunun için hazırlandı: desenizi yazarken sonucu görürsünüz, hatalarınızı Türkçe açıklamayla öğrenirsiniz ve ağır desenler tarayıcınızı dondurmaz.

    Nasıl kullanılır?

    1. "Desen" kutusuna düzenli ifadenizi yazın. Başında ve sonunda bölü işareti yazmanız gerekmez; yalnızca desenin kendisini girin. Sık kullanılan bir şeyi arıyorsanız "Hazır kalıp" listesinden telefon, e-posta, tarih ya da plaka kalıbını seçin; desen, bayraklar ve örnek metin birlikte yüklenir.
    2. Gerekli bayrakları işaretleyin. Metindeki bütün eşleşmeleri görmek için g, büyük/küçük harf farkını yok saymak için i kullanın. Her bayrağın kısa açıklaması yanındadır.
    3. Test metnini kutuya yapıştırın. Eşleşmeler "Vurgulu önizleme" bölmesinde sarı ve mavi renklerle, art arda gelenler ayırt edilebilsin diye dönüşümlü olarak işaretlenir.
    4. "Eşleşmeler" sekmesinde her eşleşmenin sırası, metindeki indeksi, yakalama grupları ve adlandırılmış grupları listelenir. "Değiştir" sekmesinde $1, $2 ya da $<ad> kullanarak yeni metni yazın; sonuç anında altta görünür.
    5. Deseniz hazır olduğunda "Deseni kopyala" ile /desen/bayraklar biçiminde panoya alın ve kodunuza yapıştırın.

    Bayraklar ne işe yarar?

    Bayraklar, desenin nasıl çalışacağını değiştiren küçük ayarlardır. g (global) açık değilse yalnızca ilk eşleşme bulunur; bütün eşleşmeleri listelemek için açın. i harf büyüklüğünü yok sayar; "Ankara" deseni "ANKARA" ile de eşleşir. m (multiline) açıkken ^ ve $ her satırın başı ve sonuyla eşleşir, kapalıyken yalnızca metnin başı ve sonuyla. s (dotAll) nokta karakterinin satır sonu karakterleriyle de eşleşmesini sağlar. u (unicode) metni kod noktaları olarak ele alır ve \p{L} gibi Unicode özellik kaçışlarını açar; emoji ya da Türkçe harf içeren metinlerde daha doğru sonuç verir. y (sticky) eşleşmenin yalnızca belirli bir konumdan başlamasını ister; ayrıştırıcı (tokenizer) yazarken işe yarar.

    Yakalama grupları ve değiştirme

    Parantez içine aldığınız her parça bir yakalama grubudur ve eşleşmenin o kısmı ayrıca saklanır. (\d{2})\.(\d{2})\.(\d{4}) deseni "15.03.2025" metninde üç grup bulur: gün, ay ve yıl. Değiştir sekmesine $3-$2-$1 yazarsanız sonuç "2025-03-15" olur. Parantezlere ad vermek isterseniz (?<yil>\d{4}) biçimini kullanın; değiştirirken $<yil> yazarsınız. Grup yakalamak istemiyor, yalnızca gruplamak istiyorsanız (?:...) yazın. $& tüm eşleşmeyi, $$ düz dolar işaretini verir.

    Kısa regex kopya kâğıdı

    Söz dizimiAnlamı
    .Satır sonu dışındaki herhangi bir karakter
    \d \w \sRakam, harf/rakam/alt çizgi, boşluk karakteri (büyük harfli hâlleri tersini ifade eder)
    [abc] [^abc] [a-z]Kümeden biri, kümede olmayan, aralık
    * + ? {2,5}Sıfır veya daha fazla, bir veya daha fazla, isteğe bağlı, belirli aralıkta tekrar
    *? +?Tembel (en az eşleşen) tekrar
    ^ $ \bBaşlangıç, bitiş, kelime sınırı
    (a|b) (?:a|b)Yakalayan ve yakalamayan grup, "veya"
    (?=x) (?!x)Önünde x var / yok (lookahead)
    (?<=x) (?<!x)Arkasında x var / yok (lookbehind)
    \. \\Özel karakterleri düz karakter olarak yazmak için kaçış

    Catastrophic backtracking nedir, neden zaman aşımı var?

    Bazı desenler belirli metinlerde, eşleşmeyi bulmak için üstel sayıda yolu denemek zorunda kalır. Buna "catastrophic backtracking" (katastrofik geri izleme) denir. Klasik örnek (a+)+$ desenidir; metin sonunda "b" gibi eşleşmeyi bozan bir karakter varsa, otuz beş kırk "a" bile işlemciyi dakikalarca meşgul edebilir. Bir web sitesinde kullanıcı girdisine böyle bir desen uygulanırsa sunucu ya da tarayıcı kilitlenir; bu, ReDoS saldırısı olarak bilinen bir güvenlik açığıdır. Aracımız desenleri ayrı bir Web Worker iş parçacığında çalıştırır ve iki saniye içinde yanıt gelmezse işlemi öldürerek size uyarı gösterir. Sayfanız donmaz, deseni düzeltip yeniden deneyebilirsiniz. Genel çözüm iç içe tekrarlardan kaçınmak, (a+)+ yerine a+ yazmak ve karakter sınıflarını mümkün olduğunca belirgin tutmaktır.

    Hazır kalıplar hakkında not

    Kütüphanedeki kalıplar bir başlangıç noktasıdır, kesin doğrulayıcı değildir. TC kimlik kalıbı yalnızca "ilk hanesi sıfır olmayan on bir rakam" biçimini arar; sağlama basamaklarını denetlemez. Gerçek bir doğrulama algoritması için TC Kimlik Doğrula aracımıza, IBAN için IBAN Doğrula aracımıza bakın. Plaka kalıbı 01-81 arası il kodlarını kabul eder, ancak o ilde fiilen verilmiş bir plaka olup olmadığını bilemez. Telefon kalıbı 5 ile başlayan on haneli cep numaralarını, isteğe bağlı +90 ya da 0 öneki ve boşluk ya da tire ayraçlarıyla yakalar. Üretim kodunuzda kullanmadan önce kendi örnek verilerinizle test edin.

    Neden Bilişim Ajans aracı?

    • Metin yüklenmez. Günlük kayıtları, müşteri listeleri ya da kod parçaları bilgisayarınızdan çıkmaz; sayfa çevrimdışı da çalışır.
    • Türkçe hata açıklaması. Parantez eksik, niteleyici yalnız, geçersiz kaçış gibi durumlar çözüm önerisiyle anlatılır.
    • Güvenli çalışma. Ağır desenler ayrı iş parçacığında ve 2 saniye sınırıyla çalışır, sayfa kilitlenmez.
    • Canlı sonuç. Yazdıkça vurgulama, grup listesi ve değiştirme sonucu güncellenir.
    • Gerçekten ücretsiz. Kayıt, sınır ve "premium" tuzağı yoktur.

    Sık sorulan sorular

    Metnim bir sunucuya gönderiliyor mu?

    Hayır. Desen ve metin tarayıcınızda, sayfanın kendi Web Worker'ında işlenir. Hiçbir ağ isteği yapılmaz; sayfa yüklendikten sonra bağlantınızı kesseniz de araç çalışır.

    Bu araç hangi regex motorunu kullanıyor?

    Tarayıcınızın JavaScript (ECMAScript) motorunu. PHP (PCRE), Python ya da .NET ile ufak farklar olabilir; örneğin JavaScript'te \A ya da satır içi bayraklar (?i) yoktur. Başka bir dil için nihai testi o dilde yapın.

    "Zaman aşımı" uyarısı alıyorum, ne yapmalıyım?

    Desen iki saniyede sonuç veremedi; büyük olasılıkla iç içe tekrar nedeniyle katastrofik geri izleme oluşuyor. (a+)+ gibi yapıları sadeleştirin, grupları ve belirsiz tekrarları azaltın, .* yerine daha belirgin bir karakter sınıfı kullanın.

    Eşleşme bulunuyor ama listede yalnızca bir sonuç var, neden?

    Büyük olasılıkla g bayrağı kapalı. Bayrak kapalıyken motor ilk eşleşmede durur. "Tümü" kutusunu işaretleyin.

    $1 ile değiştirme çalışmıyor, çıktıda "$1" yazıyor.

    Desenizde yakalama grubu, yani parantez yoktur ya da grup numarası fazladır. (\d+) gibi bir grup ekleyin. Düz dolar işareti istiyorsanız $$ yazın.

    Adlandırılmış gruplar nasıl yazılır?

    (?<ad>...) biçiminde. Örneğin (?<gun>\d{2})\.(?<ay>\d{2}). Eşleşme listesinde grup adları ayrıca gösterilir, değiştirmede $<gun> yazarak kullanırsınız.

    Türkçe karakterler (ç, ğ, ı, ö, ş, ü) \w ile eşleşir mi?

    Hayır. JavaScript'te \w yalnızca ASCII harf, rakam ve alt çizgiyi kapsar. Türkçe harfler için [A-Za-zÇĞİÖŞÜçğıöşü] yazın ya da u bayrağını açıp \p{L} kullanın. Ayrıca i bayrağı "İ" ile "i" ve "I" ile "ı" arasında Türkçe kurala göre değil, standart Unicode kuralına göre çalışır.

    Çok uzun metinlerde sayfa yavaşlar mı?

    1 MB üstü metinlerde uyarı gösteririz. Eşleşmeler en fazla 5000 ile sınırlıdır ve listede ilk 200 eşleşme kartı çizilir; vurgulama ise bütün eşleşmeleri kapsar.

    İlgili araçlar

    Kurumunuza özel yazılım ya da veri düzenleme desteği gerekiyorsa Bilişim Ajans ekibi yardımcı olur.