Regex101 vs Çevrimiçi Regex Test Araçları — Dürüst Karşılaştırma
Regex101 çoğu geliştiricinin varsayılan olarak başvurduğu regex test aracıdır. Hızlıdır, özellik açısından zengindir, altı regex lehçesini destekler ve size bir desenin her bölümünün ne yaptığını öğreten ayrıntılı bir açıklama paneli vardır. Çoğu kullanım senaryosu için altın standart itibarını hak eder.
Ancak tek seçenek değildir ve her durum için doğru seçim değildir. Test dizgilerinizi bir sunucuya gönderir. JavaScript yerine PCRE'yi varsayılan olarak seçer. Arayüzü yeni başlayanları bunaltacak kadar yoğundur. Ve başka bir sekme açmadan hızlı bir kontrol yapmanız gerekiyorsa veya hassas dizgileri harici sunuculardan uzak tutmayı önemsiyorsanız, alternatifleri bilmeye değer.
Bu karşılaştırma Regex101, Toova Regex Tester, RegExr, RegexPal, iHateRegex ve Debuggex'i kapsar — her biri ne yapar iyi, her biri nerede yetersiz kalır ve gerçek iş akışınıza göre nasıl seçim yapılır. Anlık test için, Toova Regex Tester tamamen tarayıcınızda çalışır. Bir değiştirme uyguladıktan sonra metin bloklarını karşılaştırmak için, text diff tam olarak neyin değiştiğini gösterir. Regex işlenmiş dizgilerinizin çıktı formatını doğrulamak için, markdown preview sonucu görsel olarak işler.
Regex101 — Altın Standart
Regex101, Firas Dib tarafından inşa edildi ve 2012'de yayınlandı. Çevrimiçi regex geliştirme için fiili standart haline geldi ve haklı olarak. Ücretsiz araçlar arasında özellik seti eşsizdir:
- Altı regex lehçesi: PCRE, PCRE2, ECMAScript (JavaScript), Python, Golang ve Java. Lehçeyi sol üstteki açılır menüden seçersiniz.
- Gerçek zamanlı açıklama: Regex'inizi yazarken, sağdaki ayrıntılı bir panel her belirteci — niceleyiciler, karakter sınıfları, çapalar, yakalama grupları — sade İngilizce ile desende vurgulanan tam konumla açıklar.
- Eşleşme dökümü: Her eşleşme renkli kodlanmış ve tıklanabilir. Yakalama grupları grup numaraları ve adlandırılmış grup etiketleriyle ayrı olarak gösterilir.
- Değiştirme modu: Bir değiştirme dizgisi yazın ve değiştirme sonucunu canlı olarak görün, geri başvuru desteğiyle.
- Birim test modu: Beklenen eşleşmeleri ve kaçırmaları tanımlayın, ardından bunları regex'inize karşı doğrulayın. Bir desenin aynı anda birden fazla gereksinimi karşılaması gerektiğinde kullanışlıdır.
- Kütüphane ve permalink: Regex'inizi kalıcı bir URL'ye kaydedin ve paylaşın. Kütüphane ayrıca açıklamalarla binlerce topluluğa katkıda bulunulan desen içerir.
- Hata ayıklayıcı: Motorun test dizgisini karakter karakter nasıl işlediğini, geri izleme dahil, adım adım gözlemleyin. Felaket niteliğindeki geri izlemeyi teşhis etmek için paha biçilmez.
Regex101 Sınırlamaları
Arayüz yoğundur. İlk kez kullanan bir kullanıcı, açılır menüleri, bayrak onay kutuları, bir eşleşme bilgisi paneli ve açıklama kenar çubuğunu aynı anda içeren üç panelli bir düzenle karşılaşır. Basit kullanım senaryoları için bu fazladır ve görsel gürültü sizi yavaşlatır.
Regex101 test dizginizi sunucularında işler. Kütüphane özelliği varsayılan olarak desenleri herkese açık olarak kaydeder — yapıştırdığınız ve paylaştığınız herhangi bir regex URL'ye sahip herkese görünür. Bu genellikle hassas olmayan desenler için iyidir, ancak test dizgileriniz gerçek kullanıcı verileri, dahili sistem tanımlayıcıları veya tescilli formatlar içerdiğinde dikkatli olun.
Varsayılan lehçe JavaScript değil, PCRE'dir. JS regex'i test eden geliştiriciler değiştirmeyi hatırlamalıdır — ve unutursalar, PCRE'de çalışan ancak üretim JavaScript'inde başarısız olan (veya tam tersi) bir desende hata ayıklayabilirler. Adlandırılmış yakalama grupları en yaygın tuzaktır: PCRE (?P<name>...) kullanırken ECMAScript (?<name>...) kullanır.
Toova Regex Tester — Gizlilik Öncelikli, JS Yerli
Toova Regex Tester farklı bir yaklaşım benimser: yalnızca istemci tarafı, JavaScript motoru, sıfır sunucu gidiş-dönüşü. Regex'iniz ve test dizgileriniz, tarayıcınızda Node.js ve modern tarayıcılarla aynı motor kullanılarak işlenir. Gördüğünüz, üretim JavaScript kodunuzun yapacağıdır — lehçe çevirisi gerekmez.
- Gizlilik: Hiçbir şey tarayıcınızdan çıkmaz. Hassas dizgilere karşı test için uygundur.
- JavaScript eşliği: Yerel JavaScript regex motorunu kullanır, PCRE-vs-ECMAScript karışıklığını ortadan kaldırır.
- Bayraklar: Tüm standart JS bayraklarını destekler — global, büyük/küçük harf duyarsız, çok satırlı, dotAll, unicode, sticky.
- Eşleşme vurgulama: Eşleşmeler ve yakalama grupları test dizgisinde satır içi vurgulanır.
- 16 dil: Uluslararası ekipler için yerelleştirilmiş arayüz.
Ödünler: Toova PCRE, Python veya Go lehçelerini desteklemez — yalnızca JavaScript'tir. Adım hata ayıklayıcısı, birim test modu veya topluluk kütüphanesi yoktur. Saf JS geliştirme için bu eksiklikler nadiren bir sorundur. Diller arası regex çalışması veya felaket niteliğindeki geri izlemenin derin hata ayıklaması için, Regex101 daha iyi araç olmaya devam ediyor.
RegExr — Eğitimcinin Seçimi
RegExr özellikle öğrenme amacıyla inşa edilmiştir. Topluluk kütüphanesi insan tarafından yazılmış açıklamalarla yüzlerce desen içerir — yalnızca desenin ne yaptığı değil, neden bu şekilde yapılandırıldığı ve hangi uç durumlara dikkat etmek gerektiği. Bu, yeni bir yapı anlamaya çalışırken sadece bir deseni test etmediğinizde onu mükemmel bir kaynak yapar.
Açıklama paneli, Regex101'e benzer şekilde belirteç başına dökümler gösterir ancak yeni başlayanlar için ayrıştırması daha kolay daha temiz bir görsel tasarımla. Arayüz genel olarak daha az yoğundur.
RegExr JavaScript ve PCRE lehçelerini destekler. Eşleştirme için verileri istemci tarafında işler, ancak kütüphane desenleri sunucu tarafında depolanır. Regex101 kadar özellik tamamlanmış değildir (adım hata ayıklayıcı yok, birim test yok, daha az lehçe), ancak günlük JavaScript regex çalışması ve dili öğrenmek için güçlü bir alternatiftir.
RegexPal — Minimal ve Hızlı
RegexPal sıyrılmış bir JavaScript regex test aracıdır. Hesap yok, sunucu işleme yok, kütüphane yok, açıklama paneli yok. Bir regex yapıştırırsınız, bir test dizgisi yapıştırırsınız ve eşleşmeler hemen vurgulanır. Başka hiçbir şey yok.
Bu minimalizm onun gücüdür: sayfa bir saniyenin altında yüklenir, sonuca ulaşmak için sıfır sürtüşme vardır ve yalnızca JavaScript'e odaklanma lehçe karışıklığı olmaması anlamına gelir. Hızlı bir cevaba ihtiyacınız olduğunda ve arayüz seçeneklerini düşünmek istemediğinizde kullandığınız araçtır.
Zayıflık: açıklama yok, değiştirme modu yok, adlandırılmış grup gösterimi yok, hata ayıklama yok. Regex'iniz çalışmıyorsa, RegexPal size nedenini söylemez.
iHateRegex — Desen Keşfi İçin
iHateRegex tamamen farklı bir yaklaşım benimser: yaygın görevler için üretime hazır regex desenlerinin seçili bir kütüphanesidir. E-posta doğrulama, URL eşleştirme, telefon numaraları, IP adresleri, kredi kartı formatları, onaltılık renkler, tarihler — her desen neyi kapsadığının ve neyi kasıtlı olarak hariç tuttuğunun bir açıklamasıyla gelir.
Esas olarak bir test aracı değildir. Sıfırdan özel bir desen oluştururken değil, yaygın bir sorun için bilinen iyi bir desene ihtiyacınız olduğunda iHateRegex'e gidersiniz. Desenler topluluk tarafından incelenir ve uç durumlar belgelenir, bu genellikle kendinizinkini inşa etmekten daha değerlidir.
Her desen sayfasında, kopyalamadan önce kendi örnek dizgilerinize karşı deseni doğrulamanıza olanak tanıyan temel bir test aracı vardır. Test yürütme istemci tarafıdır.
Debuggex — Görsel Açıklayıcı
Debuggex regex'inizi bir demiryolu diyagramı olarak işler — desen boyunca olası yolları gösteren bir akış şeması. Her alternatif (a|b), isteğe bağlı grup ((...)?) ve niceleyici (+, *, {n,m}) diyagramda görsel bir dal veya döngü olur.
Bu görsel temsil, doğrusal metin formunda mantığı kurmak zor olan belirli desenleri hemen açık hale getirir. (a|ab)*c gibi bir desen — felaket niteliğindeki geri izlemeye neden olduğu için kötü şöhretli — diyagramda doğrusal temsilin yapmadığı bir şekilde üstel dallanma yapısını gösterir.
Debuggex hız aracı değildir. Bir desen üzerinde inşa etmek ve yinelemek metin tabanlı araçlardan daha yavaştır. Ancak bir desenin neden beklenmedik şekilde davrandığını anlamak veya sözdizimini bilmeyen bir meslektaşa karmaşık bir regex açıklamak için, görsel çıktı gerçekten yararlıdır. JavaScript, PCRE ve Python'ı destekler.
Lehçe Referansı — Temel Farklar
Regex lehçeleri hakkında anlaşılması en önemli şey, bir lehçede çalışan bir desenin diğerinde sessizce başarısız olabileceği veya farklı davranabileceğidir. Bunlar en yaygın tuzak durumlarıdır:
Adlandırılmış yakalama grupları
PCRE (?P<name>...) kullanır. ECMAScript (JavaScript) (?<name>...) kullanır. Python her ikisini de kabul eder. Go PCRE gibi (?P<name>...) kullanır.
(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2}) Yukarıdaki PCRE formu JavaScript'te bir SyntaxError'a neden olacaktır. Doğru ECMAScript formu:
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) Bir PHP eğitiminden bir deseni JavaScript koduna kopyalıyorsanız, adlandırılmış gruplar bozulur. Her zaman lehçeyi kontrol edin.
Lookbehind iddiaları
PCRE on yıllardır değişken uzunluklu lookbehind'i destekler. JavaScript (ECMAScript 2018) lookbehind desteğini ekledi, ancak yalnızca modern motorlarda — Node.js 10+, Chrome 62+. Eski JavaScript çalışma zamanları herhangi bir lookbehind desenini SyntaxError ile reddeder.
(?<=\$)\d+(\.\d{2})? Bu desen PCRE ve modern JavaScript'te aynı şekilde çalışır, ancak ES5 hedefli ortamlarda başarısız olacaktır. Hedef çalışma zamanınız için doğru lehçeyle test edin.
Atomik gruplar ve possessive niceleyiciler
PCRE atomik grupları ((?>...)) ve possessive niceleyicileri (++, *+, ?+) destekler, bunlar geri izlemeyi önler ve bazı felaket niteliğindeki geri izleme durumlarını ortadan kaldırır. ECMAScript bunların hiçbirini desteklemez. Bunları bir desende görürseniz, PCRE'ye özgüdür ve JavaScript için yeniden yazılmalıdır.
Özellik Karşılaştırması
| Araç | Gizlilik | JS lehçesi | PCRE | Açıklama | Değiştirme | Hata ayıklayıcı | Kütüphane |
|---|---|---|---|---|---|---|---|
| Toova | İstemci tarafı | Evet | Hayır | Temel | Evet | Hayır | Hayır |
| Regex101 | Sunucu | Evet | Evet | Ayrıntılı | Evet | Evet | Evet |
| RegExr | İstemci tarafı | Evet | Evet | İyi | Hayır | Hayır | Topluluk |
| RegexPal | İstemci tarafı | Evet | Hayır | Yok | Hayır | Hayır | Hayır |
| iHateRegex | İstemci tarafı | Evet | Hayır | Desen belgeleri | Hayır | Hayır | Seçili |
| Debuggex | Sunucu | Evet | Evet | Görsel diyagram | Hayır | Hayır | Hayır |
E-posta Regex Sorunu — bir vaka çalışması
Hiçbir regex karşılaştırması e-posta doğrulamasına değinmeden tamamlanmaz. Bu araçlarda kullanılan desenler, doğru test aracını seçmenin neden önemli olduğunu gösterir.
^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$
Bu desen en yaygın "basit" e-posta doğrulayıcısıdır. Gerçek dünya e-posta adreslerinin çoğunluğunu kapsar ancak user+tag@example.co.uk gibi teknik olarak geçerli olanları reddeder (aslında geçer — + dahildir), "user name"@example.com (tırnaklı yerel bölümler — geçmez) ve ASCII olmayan etki alanları olan adresler.
Konu bu desen için hangi aracı kullanmak değildir — hepsi onu işler. Konu, desenin neyi kabul ettiğini ve reddettiğini anlamanın bir açıklama paneli (Regex101, RegExr) veya seçili belgeleme (iHateRegex) gerektirmesidir. Yalnızca vurgulanan eşleşmeleri bağlam olmadan gösteren bir araç — RegexPal, temel Toova görünümü — desenin eşleştiğini söyler ama doğru şeylerle eşleşip eşleşmediğini söylemez.
MDN'in JavaScript düzenli ifadeleri üzerine referansı ECMAScript regex sözdizimi için yetkili kaynaktır ve JS ile PCRE arasındaki farkları ayrıntılı olarak kapsar.
Gizlilik Değerlendirmeleri
Regex test araçlarının gizlilik etkileri genellikle göz ardı edilir. Test dizginiz yalnızca rastgele bir örnek değildir — sıklıkla şunlardır:
- Dahili ana bilgisayar adları, kullanıcı kimlikleri veya istek parametreleri içeren üretimden gerçek bir log satırı
- Doğrulamaya çalıştığınız kullanıcı tarafından gönderilen bir değer — potansiyel olarak bir e-posta adresi, telefon numarası veya tanımlayıcı
- Sisteminizin mimarisini ortaya çıkaran dahili bir veri formatı
- Etki alanınızla indekslenmesini veya herkese açık olarak ilişkilendirilmesini istemediğiniz tescilli bir desen
Sunucu tarafı araçlar (Regex101, Debuggex) bu veriyi uzak bir sunucuya gönderir. Regex101'in kütüphane özelliği ayrıca, varsayılan olarak herkese açık olduğunu fark etmeden bir permalink paylaşırsanız deseninizi ve test dizginizi yanlışlıkla keşfedilebilir hale getirebilir.
İstemci tarafı araçlar (Toova, eşleşme için RegExr, RegexPal, iHateRegex) tüm işlemi yerel tutar. Örnek veri kullanan geliştirme çalışması için, sunucu tarafı işleme genellikle iyidir. Gerçek verilerle üretim hata ayıklaması için, istemci tarafı bir araç kullanın.
Hangi Aracı Ne Zaman Kullanmalı
Şu durumlarda Regex101 kullanın:
- JavaScript'in yanında PCRE, Python, Go veya Java regex'i desteklemeniz gerekiyor.
- Karmaşık bir desende hata ayıklıyorsunuz ve geri izlemeyi izlemek için adım hata ayıklayıcısına ihtiyacınız var.
- Birden fazla durumu aynı anda doğrulamak için regex'iniz için birim testleri tanımlamak istiyorsunuz.
- Kalıcı bir URL ve açıklama ile bir meslektaşla bir desen paylaşmanız gerekiyor.
- Test dizginiz hassas veri içermiyor.
Şu durumlarda Toova Regex Tester kullanın:
- Hedef ortamınız JavaScript (tarayıcı veya Node.js) ve tam eşlik istiyorsunuz.
- Test dizgileriniz hassas, özel veya tescilli veri içeriyor.
- Mod değiştirmeden yineleme için hızlı, dikkat dağıtmayan bir arayüze ihtiyacınız var.
- Çok dilli bir ekipte çalışıyorsunuz ve yerelleştirilmiş bir arayüz istiyorsunuz.
Şu durumlarda RegExr kullanın:
- Regex öğreniyorsunuz ve eşleştirmenin yanında net açıklamalar istiyorsunuz.
- Yaygın sorunlar için incelenmiş desenlerin bir topluluk kütüphanesine göz atmak istiyorsunuz.
- RegexPal'den daha iyi bir açıklama paneliyle istemci tarafı gizliliğe ihtiyacınız var.
Şu durumlarda iHateRegex kullanın:
- Sıfırdan inşa etmek yerine yaygın bir görev — e-posta, URL, telefon, IP — için bilinen iyi bir desene ihtiyacınız var.
- Üretimde kullanmadan önce bir desen için belgelenmiş uç durumlar ve dışlamalar istiyorsunuz.
Şu durumlarda Debuggex kullanın:
- Karmaşık bir desenin neden beklenmedik şekilde davrandığını anlamanız gerekir — özellikle alternasyon ve geri izleme ile.
- Sözdizimini bilmeyen birine bir regex açıklıyorsunuz.
- Bir deseni belgeliyorsunuz ve görsel bir demiryolu diyagramı eklemek istiyorsunuz.
Şu durumlarda RegexPal kullanın:
- Sıfır arayüz yüküyle mümkün olan en hızlı sonucu istiyorsunuz.
- Basit bir deseni test ediyorsunuz ve açıklama veya değiştirmeye ihtiyacınız yok.
Sonuç
Regex101 itibarını hak ediyor. Çoklu lehçe desteği, derin hata ayıklama ve topluluk desenleri için, ücretsiz araçlar arasında hiçbir şey ona uymuyor. Ancak günlük JavaScript geliştirme, hassas dizgileri harici sunuculardan uzak tutma ve PCRE varsayılan tuzağından kaçınma için, istemci tarafı JavaScript yerli bir araç doğru başlangıç noktasıdır.
Çoğu JavaScript geliştiricisi için pratik öneri: rutin çalışma ve gizlilik açısından hassas test için Toova Regex Tester'ı yer imlerinize ekleyin ve adım hata ayıklayıcısına veya çoklu lehçe desteğine ihtiyacınız olduğunda Regex101'i açın. Birbirleriyle rekabet etmek yerine birbirlerini tamamlarlar.
Metni dönüştüren regex desenleri için, text diff aracı değiştirmelerin tam olarak amaçladığınız şeyi değiştirdiğini ve başka bir şeyi değiştirmediğini doğrulamanıza yardımcı olur. Ve regex işlenmiş çıktınızın markdown veya HTML içerdiğinde doğru şekilde işlendiğini test etmek için, markdown preview size anında görsel bir kontrol sağlar.