Regex Test Aracı
Bir desen ve biraz metin yazın — eşleşmeler canlı olarak vurgulanır, yakalama grupları aşağıda listelenir.
Bir deseni parça parça oluşturmak
Çalışan bir düzenli ifadeye giden en hızlı yol utanç verici derecede sıradandır: bulmak istediğiniz metni harfiyen yazarak başlayın, vurgulandığını izleyin ve ancak ondan sonra adım adım genelleştirin — rakamları [0-9]+ gibi bir sınıfla değiştirin, isteğe bağlı kısımlara bir soru işaretiyle izin verin, orta kısım düzgün davrandığında ^ veya $ ile sabitleyin. Eşleşmeler yazdıkça canlı olarak güncellendiği için, her küçük değişiklik size anında geri bildirim verir ve bir hata, üç düzenleme sonra değil, yaptığınız anda ortaya çıkar. Metin kutusuna neyi yapıştırdığınız da bir o kadar önemlidir: yalnızca desenin eşleşmesi gereken satırları değil, eşleşmemesi gereken satırları da ekleyin. Yalnızca olumlu örneklere karşı test edilen bir desen, gerçek veriyle karşılaştığı an belgenin yarısıyla eşleşme alışkanlığına sahiptir.
Çıkarma işini yakalama grupları yapar
Bir desenin bir kısmını parantez içine alın, bir yakalama grubu hâline gelir — her eşleşmenin gerçekten saklamak istediğiniz parçası. ([0-9]{2}):([0-9]{2}) gibi bir desen bir metin sayfasına karşı çalıştırıldığında yalnızca saatleri bulmakla kalmaz; metnin altındaki tablo, birinci grup saatleri ve ikinci grup dakikaları tutarak, bulunduğu konumla birlikte her eşleşmeyi listeler. g bayrağını ekleyin, ilkinde durmak yerine metindeki her tekrarı toplarsınız. Bu, günlük regex işinin çoğunun dürüst özüdür: akıllı doğrulama değil, hiç yapılandırılmak için tasarlanmamış bir metinden — tarihler, sipariş numaraları, fiyatlar gibi — yapılandırılmış değerler çekmek.
Bir desen takıldığında — ve güvenlik ağı
Bazı desenler tuzaktır. Bir açık uçlu niceleyiciyi diğerinin içine yerleştirin — klasik biçim (a+)+'dır — ve yanlış bir girdide motor, pes etmeden önce metni bölmenin üstel sayıda yolunu dener. Çoğu sitede bu, tüm sekmeyi dondurur; burada eşleştirme, iki saniye sonra durdurulan bir arka plan worker'ında çalışır, bu yüzden ölü bir sayfa yerine bir açıklama alırsınız. Çare neredeyse her zaman deseni daha özel hâle getirmektir, böylece motorun aynı metni parçalamak için daha az yolu olur. Dürüst bir uyarı: bu test aracı, desen bir betik veya web sayfası için tasarlanmışsa ideal olan JavaScript'in motorunu kullanır, ama Python ve PCRE birkaç yapıda farklılık gösterir — nihai dilde de test edin. Çıkardığınız değerler bir bağlantı veya bir sorgu dizesi için tasarlanmışsa, URL kodlayıcı doğal bir sonraki durak olur.
Bu test aracı nasıl çalışır
Deseniniz, JavaScript'in kendi düzenli ifade motoru kullanılarak metne karşı çalıştırılır — bu bir betik veya web sayfası içinse kodunuzun gerçekte kullanacağı motorun aynısıdır. Eşleşmeler metinde vurgulanır ve yakalama gruplarıyla birlikte aşağıda listelenir.
Hangi bayraklar destekleniyor?
g (global — yalnızca ilkini değil, tüm eşleşmeleri bulur), i (büyük/küçük harf duyarsız) ve m (çok satırlı, böylece ^ ve $ satır sınırlarıyla eşleşir) — pratikte kullanacaklarınız bunlardır.
Desenim neden bir hata gösteriyor?
JavaScript'in regex söz dizimi, diğer dillerden (PCRE, Python) birkaç farkla ayrılır — kaçış karakteri eklenmemiş özel bir karakter veya desteklenmeyen bir yapı, sessizce yanlış bir sonuç yerine doğrudan gösterilen bir söz dizimi hatası fırlatır.
Metnim herhangi bir yere gönderiliyor mu?
Hayır — eşleştirme tamamen tarayıcınızda, saf JavaScript ile gerçekleşir. Hiçbir şey yüklenmez.
