RevealTheme logo

Düzenli İfade Test Aracı

JavaScript düzenli ifadelerini herhangi bir girdiye karşı test edin. Eşleşmeleri, grupları ve değiştirmeleri gerçek zamanlı olarak görün.

0 eşleşme

Bu araç nasıl kullanılır

  1. 1

    Type your regular expression into the pattern field (no slashes — enter the bare pattern).

  2. 2

    Set the flags in the small field beside it, such as g, i, m, or a combination like gi.

  3. 3

    Paste or type the text you want to search into the large input box below.

  4. 4

    Read the match count and each matched substring with its character index in the results panel; an invalid pattern shows the engine's error message instead.

Düzenli ifadeler nedir ve nasıl okunur?

Düzenli ifadeler (regex), metinde desen aramak için kullanılan küçük, alana özgü bir dildir. Her modern programlama dilinin bir regex motoru vardır; bu araç, JavaScript'in yerel RegExp'ini kullanır; bu da ECMAScript 2018+ belirtimini izler ve lookbehind savları, adlandırılmış yakalama grupları, Unicode özellik kaçışları ve dotAll bayrağı gibi modern özellikleri destekler. Temel yapı taşları: harfi harfine karakterler kendileriyle eşleşir (regex 'gato', gato kelimesiyle eşleşir); karakter sınıfları bir kümeden herhangi biriyle eşleşir ('[a-z]', küçük harflerle eşleşir); niceleyiciler tekrarı kontrol eder (* sıfır veya daha fazla, + bir veya daha fazla, ? sıfır veya bir, {3,5} 3 ile 5 arası); çapalar konumlarla eşleşir (^ dizenin başı, $ sonu, \b kelime sınırı); gruplar alt eşleşmeleri yakalar ((gato|perro) herhangi biriyle eşleşir ve hangisi olduğunu yakalar); değişim seçim sunar. Regex, yapılandırılmış ancak gramatik olmayan metni (kayıtlar, e-postalar, telefon numaraları, basit HTML öznitelikleri) ayrıştırmada parlar ve gerçekten özyinelemeli yapılarda (tam HTML, iç içe JSON) başarısız olur. Bunlar için bir ayrıştırıcı kullanın. Bu test aracı, anlık geri bildirimle bir desen üzerinde yineleme yapmanıza olanak tanır: regex'i değiştirin ve eşleşmeler her tuş vuruşunda yeniden hesaplanır.

Yaygın kullanım örnekleri

  • Sunucunuza göndermeden önce kullanıcı girişi biçimini doğrulayın (e-posta adresleri, telefon numaraları, posta kodları).

  • Günlük dosyalarından yapılandırılmış veri çıkarın (zaman damgaları, IP'ler, durum kodları, istek yolları).

  • Düzenleyicinizin regex aramasını kullanarak yüzlerce dosya genelinde bul ve değiştir işlemi yapın.

  • Nginx, Apache .htaccess veya Vercel için URL yeniden yazma kuralları oluşturun.

  • Gerçek bir ayrıştırıcının gereğinden fazla olduğu basit CSV benzeri biçimleri ayrıştırın.

  • HTML <input pattern="..."> özellikleri için form doğrulama desenleri oluşturun.

Sıkça sorulan sorular

Hangi bayraklar desteklenir?
g (global: yalnızca ilkini değil, tüm eşleşmeleri bulur), i (büyük/küçük harf duyarsız), m (çok satırlı: ^ ve $ satır sonlarıyla eşleşir), s (dotAll: . satır sonlarıyla eşleşir), u (unicode: çok baytlı karakterlerin doğru yönetimi), y (sticky: yalnızca lastIndex'te eşleşir). Bayrakları art arda ekleyerek birleştirin: 'gim', global + büyük/küçük harf duyarsız + çok satırlıyı etkinleştirir.
Birden fazla satırda nasıl eşleşme yaparım?
İki farklı ihtiyaç: 'm', ^ ve $'ın satır sonlarıyla eşleşmesini sağlar (çapalar için her satırı ayrı bir dize olarak ele alır). 's', .'ın satır sonlarıyla eşleşmesini sağlar (aksi takdirde . satır sonları dışında her şeyle eşleşir). Satırlara yayılan desenlerle eşleşmeniz gerekiyorsa ikisini birlikte kullanın.
Açgözlü ve tembel niceleyiciler arasındaki fark nedir?
Açgözlü niceleyiciler (*, +, {n,m}) mümkün olduğunca çok eşleşir. Tembel olanlar (*?, +?, {n,m}?) mümkün olduğunca az eşleşir. Klasik örnek: '<a><b>' üzerindeki '<.*>' regex'i, '<a><b>'nin tamamıyla eşleşir; '<.*?>' ise yalnızca '<a>' ile eşleşir.
Ne zaman regex KULLANMAMALIYIM?
Yapı gerçekten özyinelemeli olduğunda (HTML, JSON, dengeli parantezler). Her sınır durumunu doğru yönetmeniz gerektiğinde (saat dilimleriyle tarihleri ayrıştırmak, kesme işaretli adlar). Girdinin grameri iyi tanımlandığında ve bir ayrıştırma kütüphanesi bulunduğunda. Ünlü Stack Overflow yanıtı: regex, desen bulmak için harikadır, dilleri ayrıştırmak için berbattır.
Adlandırılmış yakalama grupları nedir?
(\d{4})-(\d{2})-(\d{2})'nin numaralandırılmış gruplar döndürmesi yerine, (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) kullanın ve eşleşmelere match.groups.year olarak erişin. Gerçek kodda çok daha sürdürülebilir.
Regex'im neden belirli girdilerde yavaş?
Felaket niteliğinde geri izleme. (a+)+ gibi iç içe niceleyiciler, düşmanca girdilerde üstel süre alabilir. İç içe niceleyicilerden ve örtüşen değişimlerden kaçının. JavaScript motorunun zaman aşımı yoktur, bu nedenle kötü bir regex bir isteği askıya alabilir. Üretim için, riskli desenleri tespit etmek üzere safe-regex npm paketini kullanın.
Bu, sunucumdaki regex motorunun yaptığıyla eşleşir mi?
Çoğunlukla: başlıca regex çeşitleri (PCRE, Python'un re'si, Ruby'nin regex'i, Java) benzerdir, ancak ince farklılıkları vardır. Lookbehind söz dizimi, karakter sınıflarının davranışı ve Unicode yönetimi değişir. Üretimde eşitlik için, hedef dilde de test edin.

İlgili araçlar