Ücretsiz Regex Tester — İfadeleri Çevrimiçi Sınayın
Düzenli ifadeleri herhangi bir metne karşı anında test edin. Canlı eşleşme vurgulama, yakalama grupları, değiştirme önizlemesi, bölme ve desen açıklayıcı. JavaScript lehçesi regex, %100 gizli, çevrimiçi, ücretsiz, kayıt yok.
Ekibimiz regex çıktısını ECMA-262 şartnamesine, Node.js RegExp davranışına ve V8 / JavaScriptCore / SpiderMonkey'deki motorlar arası eşlik testlerine karşı doğrular. ReDoS bütçesi, Snort ve OWASP regex-DoS külliyatlarındaki belgelenmiş en kötü durum desenlerine karşı kalibre edilmiştir.
Regex Test Aracı Nedir?
Bir regex test aracı (düzenli ifade test aracı), bir regex deseni yazmanıza, bir test metni parçası yapıştırmanıza ve desenin tam olarak neye eşleştiğini görmenize olanak tanıyan bir araçtır — yakalama grupları, değiştirme önizlemesi ve bir bayrak ayrıntısı ile — kodu yeniden derlemeden veya bir betik çalıştırmadan. Geliştiriciler için, döngüyü dakikalardan milisaniyelere kısaltır: deseni ayarla, vurguların hareket etmesini izle, regex'i güvenle gönder.
Düzenli ifade, metin desenlerini tanımlamak için kompakt bir dildir. \d+ bir veya daha fazla rakama eşleşir. [A-Za-z_]\w* tipik bir tanımlayıcıya eşleşir. (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) bir ISO tarihine eşleşir ve her parçayı adlandırır. Düzenli ifadeler her kod düzenleyicideki ara-değiştir özelliğinin, her formdaki doğrulamanın, her gözlemlenebilirlik yığınındaki günlük ayrıştırmanın ve internetin yarısının üzerinde çalıştığı Unix araçları grep, sed ve awk çekirdeğidir. Ayrıca doğru yazmak da olağanüstü zordur: bir off-by-one niceleyici veya eksik bir kaçış yanlış alt dize ile eşleşebilir, bir eşleşmeyi tamamen kaçırabilir veya — en kötü durumda — bir CPU çekirdeğini rehin alan felaket geri izlemeyi tetikleyebilir. İyi bir regex test aracı, bu başarısızlık modlarının her birini üretime ulaşmadan önce yakalar.
Bu test aracı, her modern tarayıcıyla birlikte gelen yerel ECMA-262 RegExp motorunu çalıştırır — JavaScript, TypeScript, Node.js, Deno veya Bun'dan çağırdığınız aynı motor. Bunun anlamı: yakalama grupları (numaralandırılmış ve (?<name>...) ile adlandırılmış), ileri bakış ve geri bakış iddiaları ((?=...), (?!...), (?<=...), (?<!...)), yedi standart bayrak (g, i, m, s, u, y, d), /u altında Unicode özellik kaçışları (\p{Letter}, \p{Script=Han}) ve \d tarzı karakter kaçışları. Burada doğruladığınız desenler doğrudan kod tabanınıza yapıştırılır ve değişiklik olmadan çalışır. PCRE, Python veya Java'dan taşıyorsanız, açıklayıcı her belirteci çözer, böylece çevrilmeyen sözdizimini (atomik gruplar, sahiplenici niceleyiciler, satır içi değiştiriciler) tespit edebilirsiniz.
Test aracının ham eşleşmelerin ötesinde yüzeylendirdiği şeyler: Eşleşmeler ve yakalama grupları paneli her eşleşmeyi [start, end) ofsetleri ve her yakalama grubunun değeriyle listeler — /d bayrağıyla String.prototype.matchAll'dan alacağınız aynı bilgi, ancak görsel tarama için düzenlenmiş. Değiştir sekmesi tam $1 / $& / $` / $' / $$ / $<name> şablon alfabesini destekleyen canlı bir değiştirme önizlemesi gösterir — tam olarak JavaScript'in String.replace'ın kabul ettiği. Böl sekmesi regex ile String.split uygular ve her parçayı gösterir. Açıkla sekmesi deseni belirteçlere ayırır ve her parçayı düz İngilizce ile etiketler; kod incelemesi, öğretim ve lehçeler arası taşıma için kullanışlıdır.
Gizlilik için: her işlem yereldir. Deseniniz ve test metniniz sayfadan asla ayrılmaz — kaydedilmez, bir analiz hizmetine gönderilmez, diske kaydedilmez. Yalnızca arayüz tercihleriniz (etkin sekme + genellikle açık tuttuğunuz bayraklar) localStorage'a kalıcı olur. Bu, aracı kararartılmış günlük örnekleri, tescilli desenler, dahili yapılandırma ve veri şemanız hakkında ipuçları içeren desenler için güvenli kılar. regex101 gibi sunucu destekli test araçlarıyla karşılaştırıldığında, gizlilik ve gecikme hikâyesi kesinlikle daha iyidir; ödün, tek lehçeli destek (yalnızca JavaScript).
Regex'te yeniyseniz, Yaygın desenler aşağı açılır menüsü savaşta sınanmış başlangıçlarla birlikte gelir: e-posta adresi, URL, IPv4, UUID, onaltılık renk, ISO tarihi, ABD telefon numarası ve sondaki boşluğu kırpan bir desen. Birini yükleyin, sağlanan örnek metne karşı eşleşmeleri gözlemleyin, ardından motorun nasıl yanıt verdiğini hissetmek için deseni bir kerede bir karakter değiştirin. Regex destekli bir temizliğin öncesini/sonrasını karşılaştırmak istediğinizde bunu Metin Karşılaştırma aracıyla, girdiniz veya beklenen çıktınız JSON olduğunda JSON Biçimlendirici ile veya eşleştirdiğiniz dizeler URL kodlu olduğunda URL kodlayıcı ile eşleştirin.
// The pattern you build in this tester drops straight into JavaScript.
// Example: extract every ISO date from a string with named groups.
const pattern = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g;
const text = 'shipped 2026-05-21, scheduled 2026-06-30';
for (const m of text.matchAll(pattern)) {
console.log(m.groups.year, m.groups.month, m.groups.day);
// → 2026 05 21
// → 2026 06 30
}
// Same regex, used in a replace with $<name> templates:
text.replace(pattern, '$<day>/$<month>/$<year>');
// → 'shipped 21/05/2026, scheduled 30/06/2026'
// With the /d flag, every match carries [start, end] indices
// per capture group — the Matches panel uses this to paint offsets.
const p2 = /(?<year>\d{4})-(?<month>\d{2})/gd;
const m = [...text.matchAll(p2)][0];
m.indices.groups.year; // [8, 12] Temel Özellikler
Canlı Eşleşme Vurgulama
Test metninizdeki her eşleşme, deseniniz ayrıştırılır ayrıştırılmaz ışıldar. Sırayla değişen renkler bitişik eşleşmeleri görsel olarak saymayı kolaylaştırır ve sonucun üstündeki sayı rozeti size tam toplamı söyler — Çalıştır düğmesi yok, 200 ms'nin üzerinde bir bekletme gecikmesi yok.
Yakalama Grupları Yan Paneli
Sağdaki Eşleşmeler ve yakalama grupları paneli her eşleşmeyi [start, end) ofsetleri, tam eşleşme metni ve içindeki her konumsal + adlandırılmış yakalama grubu ile bir kart olarak listeler. Adlandırılmış gruplar kendilerini $<name> olarak etiketler; böylece veriyi kodda nasıl tüketeceğinizle aynı şekilde okuyabilirsiniz.
$1 / $& / $<name> ile Canlı Değiştirme Önizlemesi
Değiştirmenizin gerçek zamanlı uygulanmasını görmek için Değiştir sekmesine geçin. Tam ECMAScript değiştirme alfabesi çalışır: konumsal için $1..$N, adlandırılmış için $<name>, tüm eşleşme için $&, önek/sonek için $` ve $', hazır dolar için $$. Yan yana girdi ve çıktı panelleri tek tıklamayla kopyalanır.
Regex Sınırlarıyla Bölme
Böl sekmesi regex'inizle String.prototype.split çağırır ve her parçayı numaralandırılmış bir liste olarak gösterir. Boş parçalar ⏎ glifiyle oluşturulur; böylece motorun bitişik sınırlandırıcıları nasıl ele aldığını görebilirsiniz — CSV benzeri girdi temizliğinde hata ayıklama için kullanışlıdır.
Desen Açıklayıcı (Belirteç Belirteç)
Açıkla sekmesi deseninizi sınıfa göre renklendirilmiş çiplere belirteçlere ayırır (kaçış / niceleyici / karakter sınıfı / grup / sabit / alternasyon) ve her çipi tek satırlık bir açıklama ile etiketler. Göndermeden önce kendi regex'inizi kendinize geri okuyun; kod incelemesi veya öğretim için kullanın.
ReDoS Güvenli (Duvar Saati Zaman Aşımı)
Her eşleştirme çağrısı 250 milisaniyelik bir bütçeye sarılır. (a+)+, (a|aa)+b gibi klasik felaket geri izleme biçimleri ve derinden iç içe niceleyiciler, sekmeyi kilitlemek yerine bir Desen zaman aşımına uğradı uyarısıyla temiz bir şekilde durur — sayfa yanıt vermeye devam eder. Sunucu tarafı korumalı alan olmadan tespit.
Yaygın Desenler Kütüphanesi
Geliştiricilerin en çok ulaştığı sekiz desen için savaşta sınanmış başlangıçlar: e-posta, URL, IPv4, UUID v4, onaltılık renk, ISO tarihi, ABD telefon numarası ve sondaki boşluğu kırpma. Her biri eşleşen bir örnekle yüklenir, böylece uyarlamadan önce regex'in çalıştığını görürsünüz.
Kalıcı Bağlantı Paylaşımı (Yükleme Yok)
Bağlantıyı kopyala, deseni + bayrakları + örnek metni URL hash'ine kodlar (#p=…&f=gim&t=…). Tarayıcılar URL parçalarını isteklerde asla iletmez; böylece paylaşılan bir bağlantı durumunuzu alıcının makinesinde go-tools.org sunucularına dokunmadan yeniden üretir. Kendi kendine yeterli, denetim dostu.
%100 Gizli, Yalnızca Tarayıcı
Regex'iniz ve test metniniz cihazınızdan asla ayrılmaz. Ağ isteği yok, günlük yok, yazdıklarınız üzerinde analiz yok. DevTools → Ağ sekmesinde doğrulayın: yazdığınızda sıfır istek. Tescilli desenler, kararartılmış günlükler ve regex101'e yapıştırmayacağınız her metin için güvenli.
Çalışan Örnekler
Bir paragraftan her e-posta adresini çıkarın
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g Deseni /g bayrağı açıkken yapıştırın, test metnine bir paragraf bırakın; her e-posta vurgulu görünümde ışıldar. Sağdaki Eşleşmeler ve yakalama grupları paneli, her adresi [start, end) ofsetleriyle listeler — aynı regex'i grep, sed veya bir kod düzenleyiciye aktarırken kullanışlıdır.
Adlandırılmış gruplarla tarih parçalarını yakalayın
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g ECMA-262 adlandırılmış grupları sağ panelde $<year>, $<month>, $<day> olarak görünür. Değiştir sekmesine geçin ve ISO tarihleri tek geçişte DMY biçimine dönüştürmek için $<day>/$<month>/$<year> deneyin — aynı numara her modern JS replace çağrısında çalışır.
$1 geri referanslarıyla bul/değiştir
(\w+) (\w+)
Değiştirme: $2, $1 → Jack Doe → Doe, Jack
İki adsız yakalama grubu, $2, $1 değiştirme şablonu ve Değiştir sekmesi size canlı bir önizleme verir. $&, $`, $', $$ ve $<name> tamamen desteklenir — ECMAScript şartnamesindeki tam değiştirme alfabesi olduğundan kopyaladığınız çıktı, herhangi bir JS motorunda değiştirilmeden çalışır.
Satır satır sondaki boşlukları temizleyin
[ \t]+$
/[ \t]+$/gm
$ ifadesinin yalnızca girişin sonunda değil her satır sonunda sabitlenmesi için /g (global) ve /m (multiline) bayraklarını birleştirin. Boş değiştirme önizlemesiyle Değiştir sekmesi temiz bir fark gösterir: sondaki sekmeler ve boşluklar kaybolur, metin yerinde kalır. Aynı regex /s (dotAll) bayrağı kapalıyken, . karakterinin yeni satırları aşmasını engeller.
Felaket geri izlemeyi tespit edin ve hayatta kalın
(a+)+b
Test metni: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac
İç içe + niceleyicileri klasik bir ReDoS deseni oluşturur. Saf bir test aracında bu, sekmeyi kilitler. Burada duvar saati koruması 250 ms sonra tetiklenir, Desen zaman aşımına uğradı uyarısı çıkar ve sayfa yanıt vermeye devam eder. Deseni sabitleyin, çakışmayan bir alternasyona geçin veya atomik benzeri deyimler kullanın — ve yeniden test edin.
Karışık sınırlandırıcılarla CSV benzeri satırı bölün
[,;|]\s*
alpha, beta; gamma | delta → ["alpha", "beta", "gamma", "delta"]
Böl sekmesine geçin. Herhangi bir virgül, noktalı virgül veya boru (ardından isteğe bağlı boşluk) bir parça sınırı olur. Kopyala-yapıştır etiket listelerini temizlemek, kullanıcı girdisini normalleştirmek veya gerçek bir CSV ayrıştırıcısından önce günlük alanlarını ön işlemek için kullanışlıdır — veriler gerçekten RFC 4180 ise CSV'den JSON'a aracına bakın.
Regex Test Aracı Nasıl Kullanılır
- 1
Desenenizi bölü işaretlerinin arasına yazın
Herhangi bir ECMA-262 düzenli ifadesini /…/ alanına bırakın. Hatalı desenler bir ayrıştırıcı mesajıyla kırmızıyla vurgulanır; geçerli desenler canlı eşleştirmeye geçer.
- 2
İhtiyacınız olan bayrakları açıp kapatın
g (global), i (büyük/küçük harf duyarsız), m (multiline), s (dotAll), u (unicode), y (yapışkan), d (indisler). Her çip açıkken yanar; desenin sağındaki gösterge standart değişmezi gösterir.
- 3
Test metninizi yapıştırın
Eşleşmeler siz yazarken sırayla değişen renklerde vurgulanır. Sağdaki Eşleşmeler ve yakalama grupları paneli her eşleşmeyi [start, end) ofsetleriyle ve her yakalama grubunun değeriyle listeler (adlandırılmış gruplar $<name> olarak etiketlenir).
- 4
Değiştirme, Bölme veya Açıklama için sekmeleri değiştirin
Değiştir, girdiyle birlikte bir değiştirme şablonunu önizler. Böl, her eşleşme sınırında dilimler. Açıkla deseni belirteç belirteç çözer ve her ögeyi düz İngilizce bir açıklama ile etiketler.
- 5
Değişmezi kopyalayın veya bir kalıcı bağlantı paylaşın
Kopyala /pattern/flags JavaScript / TypeScript / Node'da doğrudan kullanım için standart regex değişmezini panonuza bırakır. Bağlantıyı kopyala tüm durumu bir URL hash'ine kodlar (yükleme yok), böylece bir meslektaş onu yerel olarak yeniden üretebilir.
Yaygın Regex Hataları
/g bayrağını unuttum ve yalnızca bir eşleşme aldım
/g (veya /y) olmadan motor ilk eşleşmeden sonra durur. match, matchAll, replace ve split yöntemlerinin tümü global bayrak etrafında farklı davranır. /g açıp yeniden çalıştırın; sonuçların üstündeki sayı 1'den N'ye atlar.
Desen: /\d+/ → '1 22 333' yalnızca ['1'] verir
Desen: /\d+/g → '1 22 333' ['1', '22', '333'] verir
Açgözlü niceleyici çok fazla tüketti
.+ mümkün olduğunca çok tüketir; bu nedenle <a> and <b> üzerinde <.+>, <a> değil <a> and <b> yakalar. Tembel niceleyiciler (.+?), daha kısıtlayıcı karakter sınıfları ([^>]+) veya bakışlarla sabitleyin.
Desen: /<.+>/ → '<a> and <b>' ifadesine eşleşir
Desen: /<[^>]+>/ → '<a>' ve '<b>' ayrı ayrı eşleşir
İç içe niceleyicilerden felaket geri izleme
Uzun başarısız bir dizeye karşı (a+)+b üstel olarak patlar. Desen zaman aşımına uğradı uyarısı 250 ms sonra tetiklenir; yuvalamayı kaldırmak için yeniden yazın: a+b aynı işi doğrusal zamanda yapar. Atomik grup simülasyonu (?=(a+))\1b başka bir seçenektir.
Desen: /(a+)+b/ 'aaaaaaaaaaaaaaaaaaaaac' üzerinde → zaman aşımı
Desen: /a+b/ aynı girdide → anında 'eşleşme yok'
$ ve ^ sabitleri Python'un \A ve \Z'si gibi davranmaz
JavaScript'te ^ ve $, YALNIZCA /m açıkken satır başı / satır sonu anlamına gelir; aksi takdirde dize başı / dize sonu anlamına gelirler. Python'un \A ve \Z (her zaman dize sınırları anlamına gelen) JS'te yoktur. Gerektiğinde /m'yi açıp kapatın.
Desen: /^Error/ çok satırlı bir günlükte /m olmadan → yalnızca ilk satıra eşleşir
Desen: /^Error/m aynı girdide → Error ile başlayan her satıra eşleşir
Bir dizede $1 kullandım ancak replace'i bir işlevle çağırdım
text.replace(re, '$1') geri referansı genişletir. text.replace(re, () => '$1') işlevler şablon belirteçlerini görmediği için hazır '$1' dizesini geçirir. İşlevin içinde, yakalama grupları konumsal argümanlar olarak gelir.
text.replace(/(\w+)/, m => '$1') → hazır '$1' verir
text.replace(/(\w+)/, (_, g1) => g1.toUpperCase()) → yakalamayı kullanır
Unicode karakterleri \w veya . ile eşleşmiyor
Varsayılan \w ifadesi [A-Za-z0-9_] şeklindedir. Her alfabedeki her harfe eşleştirmek için /u'yu etkinleştirin ve \p{Letter} (\p{L}) ifadesine geçin. Nokta da varsayılan olarak yeni satırlarda durur — gerçek bir herhangi bir karakter istediğinizde /s (dotAll) kullanın.
Desen: /\w+/ 'hello' ifadesine eşleşir ama 'héllo' veya '你好' ifadesine eşleşmez
Desen: /\p{Letter}+/u üçüne de eşleşir Bir PCRE deseni yapıştırdım; SyntaxError aldım
JavaScript atomik gruplar (?>...), sahiplenici niceleyiciler a++, satır içi değiştiriciler (?i), koşullar (?(1)yes|no) veya \A / \Z ifadelerini desteklemez. Ayrıştırıcı hatası ihlal eden yapıyı adlandırır — JS destekli eşdeğerine yeniden yazın (bakış simülasyonu, ayrı bayrak değişimi, alternasyon).
Desen: (?i)foo → SyntaxError: invalid group
Desen: foo + /i bayrağı açık → aynı etki
Bu Aracı Kim Kullanır
- Göndermeden Önce Form Girdilerini Doğrulayın
- E-posta / telefon / posta kodu / kullanıcı adı regex'inizin beklediklerinize eşleştiğini — ve beklemediklerinizi reddettiğini — uç durumlarda (unicode adlar, artı takma adlar, uluslararası biçimler) doğrulayın; doğrulama üretime ulaşıp gerçek kullanıcıları sektirmeden önce.
- Günlüklerden ve Yapılandırmalardan Veri Çıkarın
- Rastgele bir günlük diliminden istek kimliklerini, durum kodlarını, gecikmeleri veya yığın izleme satırlarını çeken bir desen oluşturun. Adlandırılmış gruplar veriyi kendi kendini belgeleyen yapar; Eşleşmeler paneli ofsetleri gösterir; böylece aynı regex'i sonrasında
rg --replaceveyagrep -oEiçine aktarabilirsiniz. - Bir Kod Tabanında Bul/Değiştir
- Burada bir yeniden düzenleme deseni taslağı (örneğin
(\w+)\.apply\(null,\s*\[(.*?)\]\)→$1($2)) hazırlayın, değiştirmeyi temsili parçacıklara karşı önizleyin, ardından doğrulanmış regex'i düzenleyicinizin proje genelinde bul/değiştir özelliğine güvenle yapıştırın. - Çevrimiçi Bulunan Bir Deseni Mantık Sınamasından Geçirin
- StackOverflow'dan veya bir blogdan bir regex mi yapıştırdınız? Açıkla sekmesine bırakın — her belirteç düz İngilizce ile etiketlenir. Regex kodunuza inmeden önce ince sorunları (
.+istediğiniz yerde.+?, eksik^/$sabitleri, kazara açgözlü niceleyiciler) yakalar. - Bir Takım Arkadaşınıza Regex Öğretin
- Çalışan bir desende Açıkla sekmesini açın ve belirteç belirteç gezinin. Renk kodlaması (kaçış / niceleyici / karakter sınıfı / grup / sabit / alternasyon), öğrencinin regex'in yalnızca karakterlerini değil yapısal şeklini görmesini sağlar.
- Bir Deseni Diller Arası Taşıyın
- JavaScript'te kullanmanız gereken bir Python veya PCRE regex'iniz mi var? Buraya yapıştırın. Ayrıştırılırsa, açıklayıcı size JS eşdeğeri anlambilimini gösterir; ayrıştırılmazsa, ayrıştırıcı hatası ihlal eden yapıyı adlandırır (atomik gruplar, sahiplenici niceleyiciler, satır içi
(?i)); böylece tam olarak neyi yeniden yazmanız gerektiğini bilirsiniz. - Yavaş Bir Üretim Regex'inin Hatalarını Ayıklayın
- Bir sunucu regex'inin felaket geri izlemeye yatkın olduğundan şüpheleniliyorsa, girdinin bir örneğiyle bu test aracına yapıştırın. 250 ms duvar saati koruması patolojik durumlarda tetiklenir; size profilleyici araçlarına uzanmadan önce anında bir tanı verir — ve açıklayıcı iç içe niceleyici kök sebebine işaret eder.
Motor ve Algoritma Notları
- ECMA-262 RegExp Motoru (Yerel Tarayıcı)
new RegExp(pattern, flags)ve V8 / JavaScriptCore / SpiderMonkey ile birlikte gelen motoru kullanır — JavaScript'te her yerde elde ettiğiniz aynı regex anlambilimi. Burada doğruladığınız desenler Node.js, Deno, Bun ve her modern tarayıcıda değişiklik olmadan çalışır.- String.matchAll Üzerinden Eşleşme Yinelemesi
- Global yineleme, elle bir lastIndex döngüsü yerine
text.matchAll(regex)kullanır; böylece her eşleşme yakalama gruplarını, adlandırılmış gruplarını ve (/d ile) [start, end] indislerini taşır. Sıfır genişlikli eşleşmeler, sonsuz döngüleri önlemek için standart +1 lastIndex ilerletmesiyle ele alınır. - ReDoS Koruması için Duvar Saati Zaman Aşımı
- 250 milisaniyelik bir bütçe her eşleştirme, değiştirme ve bölme çağrısını sarar. Motor hâlâ tek bir eşleşme denemesinde dahili olarak geri izleyebilir, ancak dış yineleme bütçeyle işbirliği yapar — patolojik desenler
timedOut: trueile durur ve arayüz, sekmeyi kilitlemek yerine bir uyarı yüzeylendirir. - Değiştirme Şablonu Yeniden Uygulaması
- Değiştir sekmesi $1..$N, $&, $
, $', $$ ve $<name> ifadeleriniString.replace`'a devretmek yerine elle ayrıştırır; böylece önizleme, adlandırılmış grup şablonlarının uç durumlara sahip olduğu motorlar (daha eski Safari, daha eski Node) arasında aynı şekilde davranır. Çıktı, geçerli JavaScript motorlarının ürettiğinin tam olarak aynısıdır. - Açıklayıcı için Desen Belirteçleyici
- Açıkla sekmesi, her desen parçasını sınıflandıran (kaçış / metakarakter / niceleyici / karakter sınıfı / grup açılışı / grup kapanışı / sabit / alternasyon) elle yazılmış bir belirteçleyici çalıştırır. Tanıdık olmayan yapılar genel bir notla
literalolarak düşer; böylece açıklayıcı asla içeriği sessizce düşürmez. - URL Hash'i Üzerinden Kalıcı Bağlantılar (Asla İletilmez)
- Paylaşım durumu location.hash parçasında (
#p=…&f=…&t=…&tab=…) kodlanır. Tarayıcılar parçayı HTTP isteklerinde asla iletmez; böylece go-tools.org sunucuları bir kalıcı bağlantı açıldığında sıfır veri alır. Hidrasyon tamamen alıcının cihazında gerçekleşir.
Regex En İyi Uygulamaları
- Desenleri İstediğinizde Sabitleyin
^pattern$tam bir dizeye eşleşir;patternherhangi bir yerde eşleşir. Yanlış seçim, form doğrulamasındaki en yaygın hatadır: eksik^bir baştakiattacker.com/ifadesinin alan adı denetiminden geçmesine izin verir; eksik$sondaki çöpün geçmesine izin verir. Neyin reddedildiğini doğrulamak için kasıtlı olarak bozuk örneklere karşı Eşleştir sekmesini kullanın.- Saf Yapı için Yakalama Yapmayan Grupları Tercih Edin
(?:foo|bar)+ve(foo|bar)+işlevsel olarak özdeştir, ancak ilki bir yakalama grubu ayırmaz. Grup yalnızca bir niceleyici veya alternasyon için var olduğunda(?:…)öğesine uzanın — numaralandırılmış $1..$N'nizi kararlı tutar ve küçük miktarda motor işinden tasarruf eder.- ASCII Ötesindeki Her Şey için /u Bayrağını Kullanın
- /u olmadan, nokta ve
\wvekil çift karakterlerini (emojiler, BMP olmayan kod noktaları) iki UTF-16 birim olarak ele alır. /u ile her biri bir kod noktasıdır — kullanıcılarınızın algılayacağı şey. /u ayrıca\p{Letter}ve diğer özellik kaçışlarını da etkinleştirir. Yeni desenler için /u kullanmamak için belirli bir nedeniniz olmadıkça varsayılan olarak /u kullanın. - Yakalama Gruplarınızı Adlandırın
(?<year>\d{4})-(?<month>\d{2})kendi kendini belgeleyendir. Altı ay sonra regex'i geri okuduğunuzda,m.groups.yearaçıkça yıldır —m[1]değil. $<name> ile değiştirme şablonları, grup yeniden sıralamasından da hayatta kalır: konumsal şablonlar, birisi başka bir grup eklediği anda kırılır.- Yalnızca Başarıyı Değil, Başarısızlık Durumlarını da Test Edin
- Bir regex test aracı başarısızlıklar içindir. Deseninizin neye eşleştiğini doğrulayın, ardından neye eşleşmediğini görmek için test metnini kasıtlı olarak değiştirin — baştaki boşluk, sondaki boşluk, eksik parçalar, fazla parçalar, yanlış büyük/küçük harf, karışık alfabeler. Geçerli girdiyi geçen ancak çöpü kabul eden desenler, üretimin ilk önce ortaya çıkardığı hatalardır.
Sıkça Sorulan Sorular
Regex'im veya test metnim sunucunuza gönderiliyor mu?
Bu test aracı hangi regex lehçesini kullanır — PCRE, Python, Java, JavaScript?
new RegExp(pattern, flags) ile aldığınız aynı motor. Bu, desteklenen özelliklerin şunlar olduğu anlamına gelir: yakalama grupları (numaralandırılmış + (?<name>...) ile adlandırılmış), ileri bakışlar (?=...) ve (?!...), geri bakışlar (?<=...) ve (?<!...), yedi bayrak g/i/m/s/u/y/d, /u altında Unicode özellik kaçışları (\p{Letter}) ve geri referanslar \1..\9. Yalnızca PCRE'ye özgü özellikler — atomik gruplar (?>...), sahiplenici niceleyiciler a++, koşullar (?(1)yes|no) ve satır içi değiştiriciler (?i) — sözdizimi hatası fırlatır. Python'un re.VERBOSE modu burada desteklenmez. Python/Java/Go regex'i için deseni yerel motoruna geri taşıyın — çoğu basit desen değiştirilmeden aktarılır ve buradaki açıklayıcı lehçeden bağımsızdır. g, i, m, s, u, y, d bayraklarının her biri ne işe yarar?
.indices ve .indices.groups doldurur; bu test aracı grup sınırlarını çizmek için içeride /d kullanır. Test metninin üstündeki çiplerden bunları açıp kapatın; standart /pattern/flags değişmezi okunabilir alanda gösterilir. Yakalama gruplarını nasıl yazarım ve onlara nasıl geri başvururum?
(\d{4})-(\d{2})-(\d{2}) size üç konumsal grup verir, değiştirmelerde $1, $2, $3 veya Eşleşmeler panelinde m.groups[0..2] olarak erişilebilir. Adlandırılmış gruplar için (?<name>...) kullanın: (?<year>\d{4})-(?<month>\d{2}) değiştirme şablonunda $<year>/$<month> yazmanıza izin verir. Yalnızca bir niceleyici için gruplama gerektiğinde (?:...) ile yakalama yapmayan grup kullanın ((?:foo|bar)+) — geri referans oluşturmaz, böylece numaralandırılmış $1..$N kararlı kalır. Aynı desen içinde, önceki bir yakalamaya \1, \2 vb. ile başvurun — \b(\w+)\s+\1\b gibi tekrarlanan kelimeleri bulmak için kullanışlıdır. İleri bakış ve geri bakış nasıl çalışır ve ne için iyidirler?
(?=foo) (pozitif ileri bakış), foo geçerli konumdan sonra geliyorsa başarılı olur; (?!foo) (negatif ileri bakış), foo gelmiyorsa başarılı olur. (?<=foo) ve (?<!foo) bunların geri bakış karşılıklarıdır. Pratik kullanımlar: çevresini dahil etmeden bir alt diziyi çıkarmak ((?<=\$)\d+, dolar işaretinden sonraki rakamlara eşleşir, ancak $ eşleşmenin parçası değildir), tek bir desende birden çok kısıtla doğrulamak ((?=.*[A-Z])(?=.*\d).{8,} en az bir büyük harf, bir rakam ve 8 karakter gerektirir) ve oluşumları yasaklamak (^(?!.*\bpassword\b) password kelimesini içeren her satırı reddeder). Modern ECMA-262, değişken uzunluklu geri bakışı destekler; böylece (?<=^prefix-?) çalışır. Regex'im neden tarayıcıyı askıya alıyor ve felaket geri izleme nedir?
(a+)+, (a|aa)+, (\w*)* veya (?:a|a?)+. Eşleşmenin son karakterde başarısız olabileceği bir girdide, motor pes etmeden önce üstel sayıda grup bölüşümü dener. aaaaaaaaaaaaaaaaaaaaab üzerinde (a+)+b deseniyle, cevaptan önce 2^21 ≈ 2 milyon geri izleme olur. Bu test aracı her eşleştirme çağrısını 250 ms duvar saati bütçesiyle sarar — bütçe aşılırsa yineleme durur ve Desen zaman aşımına uğradı uyarısını görürsünüz. Düzeltmeler: deseni sınırlarına sabitleyin (^...$), çakışmayan alternatifleri tercih edin ((a|aa) yerine (a|b)), iç içe niceleyicileri açın ((a+)+ yerine a+) veya sahiplenici benzeri deyimleri kullanın ((?=(a+))\1 JS'te a++ simüle eder). Bu regex test aracı regex101.com'dan nasıl farklı?
. | ( ) [ ] { } * + ? ^ $ \ gibi özel karakterleri nasıl kaçırırım?
\., \|, \(, \), \[, \], \{, \}, \*, \+, \?, \^, \$, \\. İleri bölü / dize olarak geçirilen bir desende kaçırılmaya gerek duymaz (yalnızca JS regex değişmezlerinde bölü işaretleri arasında). Bir karakter sınıfı [...] içinde çoğu metakarakter özel anlamını yitirir, bu yüzden [.], [*], [+] bir hazır karaktere eşleşir — özel kalan tek metakarakterler ], \, ^ (yalnızca başta olumsuzlamak için) ve - (iki karakter arasındayken aralık). Şüpheniz varsa, hazır metni desene yapıştırın ve açıklayıcıyı çalıştırın: her kaçış dizisi, ayrıntı panelinde tek satırlık bir açıklama alır. Bir meslektaşımla regex'i bir bağlantı üzerinden paylaşabilir miyim?
#p=...&f=gim&t=...&tab=match). Bağlantıyı açan herkes, sayfayı aynı durumla — kendi makinesinde yerel olarak — sulandırır. Veri hash parçasında yaşadığı için, go-tools.org sunucusuna asla gönderilmez (tarayıcılar isteklerde parçaları iletmez) ve erişim günlüklerimizde kaydedilmez. Bağlantı uzunluğu metin boyutuyla büyür; bu yüzden >2 KB örnekler için regex'i Kopyala /pattern/flags ile alın ve metni ayrı yapıştırın. Gerçek metni paylaşmadan ortak regex incelemesi için yalnızca deseni ve bayrakları paylaşın — alıcı kendi külliyatını yapıştırır ve aynı eşleşmeleri alır. Test aracı Unicode, emoji ve Latin olmayan alfabeleri destekliyor mu?
\p{Letter} her alfabedeki her harfe, \p{Script=Han} Çince ideogramlara, \p{Emoji} emojilere, \p{Number} her rakam/sayıya eşleşir. /u olmadan, 👨💻 gibi vekil çifti emojiler iki UTF-16 kod birimi olarak görülür ve ^.$ gibi desenler bunlara eşleşmeyi başaramaz; /u ile nokta her grafem kod noktasını tek bir karakter olarak ele alır. RTL alfabeler (Arapça, İbranice) için desenler özel işlem gerektirmeden çalışır — yön bir oluşturma zamanı meselesidir, regex motoru meselesi değil. CJK içeriği Latin ile aynı şekilde eşleşir. .match, .matchAll, .replace ve .split arasında regex ile ne fark var?
Neden Python veya Java regex'im burada çalışmıyor?
(?i) ve (?x) JS'te geçerli değildir — bunun yerine üstteki bayrak çiplerini kullanın. (2) Python'un \A ve \Z ifadeleri JS'te ^ ve $ ile (satır sabitleri için /m ile). (3) Java/Python koşulları (?(name)yes|no) JS'te desteklenmez — bir alternasyonla yeniden yazın. (4) Sahiplenici niceleyiciler a++ ve atomik gruplar (?>...) JS'te yoktur — (?=(a+))\1 ile simüle edin. (5) Python (?P<name>...) JS'te (?<name>...) olur. (6) Yatay boşluk için \h ve dikey için \v JS'te yoktur — [ \t] ve [\n\r] kullanın. Taşınabilir bir taşıma için açıklayıcı her belirteci açıklar, böylece desteklenmeyen sözdizimini bir eşdeğeriyle değiştirebilirsiniz. Maksimum metin boyutu veya eşleşme sayısı var mı?
grep -oE veya rg (ripgrep) ile çalıştırın — bunlar akışla çalışır ve bir arayüz oluşturma sınırına çarpmaz. Büyük metnin tek seferlik taramaları için, deseni doğrulamak üzere temsili bir dilim bu test aracına yapıştırın, ardından doğrulanmış deseni kabuğunuzda tam dosyaya karşı çalıştırın. İlgili Araçlar
Tüm araçları görüntüleyin →Harf Dönüştürücü — UPPER, lower, camelCase ve Daha Fazlası
Metin İşleme
Metni UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE ve 6 biçim daha arasında anında dönüştürün. Ücretsiz, çevrimiçi, kayıt yok.
Lorem Ipsum Oluşturucu — Ücretsiz Yer Tutucu Metin
Metin İşleme
Lorem Ipsum yer tutucu metni anında oluşturun — paragraf, cümle, kelime, bayt veya liste olarak. Düz metin, HTML, Markdown veya JSON olarak kopyalayın ya da indirin. %100 ücretsiz, gizli, tarayıcı içi. Kayıt gerekmez.
Metinden Yinelenen Satırları Kaldır
Metin İşleme
Metinden yinelenen satırları çevrimiçi kaldırın — ücretsiz, anında, %100 tarayıcınızda. Büyük/küçük harf veya boşluğu yoksayın, ilk ya da son tekrarı tutun ve kaldırılan sayıyı görün. Ayrıca sıralayın ve temizleyin. Kayıt yok.
URL Slug Üretici — Her Metni Slug'a Çevirin
Metin İşleme
Her başlığı anında temiz, SEO dostu bir URL slug'ına çevirin. Aksanları ve Kiril'i harf çevirisiyle dönüştürün veya Unicode harfleri koruyun. %100 gizli, tarayıcınızda.
Metin Satırlarını Alfabetik ve Doğal Sırala
Metin İşleme
Metin satırlarını alfabetik, sayısal (doğal sıra) veya uzunluğa göre, artan ya da azalan sıralayın. Ücretsiz çevrimiçi satır sıralayıcı, %100 tarayıcınızda. Ayrıca yineleme kaldırma, ters çevirme ve liste temizleme. Kayıt yok.
Metin Karşılaştırma ve Diff
Metin İşleme
İki metni tarayıcınızda anında karşılaştırın. Satır içi kelime düzeyinde vurgulu yan yana görünüm, unified-diff dışa aktarımı, büyük/küçük harf — boşluk — boş satır yoksayma. %100 gizli — metniniz cihazınızdan ayrılmaz.