`RegExp` Nesnesi
Bu makale RegExp nesnesini açıklar.
RegExp nesnesini pratik örneklerle açıklayacağız.
YouTube Video
RegExp Nesnesi
RegExp nedir?
RegExp (Düzenli İfade), dize desenlerini ifade etmek için kullanılan bir nesnedir. Basit karakter karşılaştırmalarının aksine, belirli koşulları karşılayan 'dizeleri' esnek bir şekilde tanımlayabilirsiniz.
RegExp nesnesini kullanarak, dizeleri arama, doğrulama, çıkarma ve değiştirme gibi işlemleri öz ve anlaşılır bir şekilde yapabilirsiniz. Form girişi doğrulama, günlük analizi ve metin biçimlendirme gibi günlük görevler için son derece etkilidir. Aşağıda, düzenli ifadelerin bazı basit örnekleri bulunmaktadır.
1const pattern = /abc/;- Bu düzenli ifade, 'abc' dizisinin içerilip içerilmediğini kontrol eder.
Düzenli İfadeler Nasıl Oluşturulur (İki Yöntem)
RegExp sözdiziminin iki türü vardır: literal gösterimi ve yapıcı (constructor) gösterimi.
1// Literal notation: pattern and flags are written together
2const literal = /hello/;
3const literalWithFlag = /hello/i;
4const literalDigits = /\d+/;
5
6// Constructor notation: pattern and flags are passed separately
7const constructor = new RegExp("hello");
8const constructorWithFlag = new RegExp("hello", "i");
9const constructorDigits = new RegExp("\\d+");- Sabit olarak kullanılan düzenli ifadeler için kısa ve okunabilir olduğu için açıkça biçimi uygundur.. Öte yandan, kalıbı değişkenler kullanarak oluşturmak veya içeriğini çalışma zamanında belirlemek istediğinizde yapıcı notasyonu kullanılır.
- Açıkça biçimiyle, hem düzenli ifadeyi hem de bayraklarını sezgisel olarak birlikte tanımlayabilirsiniz. Buna karşılık, yapıcı notasyonunda, deseni ve bayrakları ayrı ayrı belirtmeniz gerekir.
- Ayrıca, yapıcı notasyonu ile düzenli ifadeyi bir dize olarak aktardığınız için ters eğik çizgiler iki kez kaçırılmalıdır.
test(): En Temel Doğrulama
RegExp nesnesi, düzenli ifadeleri kullanarak değerlendirme ve işlem yapma yöntemleri sunar. test() metodu, bir desenin eşleşip eşleşmediğini belirten bir boolean değer döndürür.
1const regex = /JavaScript/;
2
3console.log(regex.test("I love JavaScript")); // true
4console.log(regex.test("I love TypeScript")); // false
- Öğrenmeniz gereken ilk metottur ve koşullu dallanma veya giriş doğrulama için idealdir.
match(): Eşleşen Sonuçları Al
match() eşleşen dizeyi ve ayrıntılı bilgileri içeren bir dizi döndürür.
1const text = "Version 1.2.3";
2const result = text.match(/\d+\.\d+\.\d+/);
3
4console.log(result[0]); // "1.2.3"
match(), çıkarma ve ayrıştırma işlemleri içintest()metoduna göre daha kullanışlıdır.
replace(): Düzenli İfadelerle Değiştirme
replace() eşleşen kısmı başka bir dizeye dönüştürür.
1const text = "Hello World";
2const result = text.replace(/\s+/g, " ");
3
4console.log(result); // "Hello World"
- Günlük biçimlendirme veya gereksiz boşlukları normaleştirme için kullanabilirsiniz.
Bayrakların Temelleri (g, i, m)
Düzenli ifadelerde 'bayraklar' belirtebilirsiniz. Bayraklar, bir düzenli ifadenin dizeleri belirli kurallara göre nasıl işleyeceğini kontrol eden seçeneklerdir. Aynı desenle bile, sonuçlar kullanılan bayraklara göre değişebilir.
1const text = "apple Apple APPLE";
2const regex = /apple/gi; // or new RegExp("apple", "gi");
3
4console.log(text.match(regex)); // ["apple", "Apple", "APPLE"]
g(global) bayrağı, tüm dize boyunca arama yapar.i(büyük/küçük harfi yok say) bayrağı, eşleşme sırasında harf büyüklük-küçüklük farklarını göz ardı eder.
1const multilineText = `apple
2banana
3apple`;
4
5const regexM = /^apple/gm;
6
7console.log(multilineText.match(regexM)); // ["apple", "apple"]
m(çok satırlı) bayrağı, çok satırlı dizeleri satır bazında işlemek için kullanılır. Bunun sayesinde,^ve$, tüm dize yerine her bir satırın başı veya sonu bazında çalışır.
Karakter Sınıfları: Birden Fazla Adayı Birleştirme
Köşeli parantez [] kullanarak tek bir konum için olası karakterlerin bir grubunu tanımlayabilirsiniz.
1const regex = /gr[ae]y/;
2
3console.log(regex.test("gray")); // true
4console.log(regex.test("grey")); // true
- Bu, yazım varyasyonları ve basit alternatifler için kullanışlıdır.
Metakarakterler: Yaygın Kısayollar
Meta karakterler, sık kullanılan kalıpları daha kısa bir biçimde yazmanıza olanak tanıyan sembollerdir.
1const regex = /\d{4}-\d{2}-\d{2}/; // or new RegExp("\\d{4}-\\d{2}-\\d{2}");
2
3console.log(regex.test("2025-12-29")); // true
\dbir rakamı belirtir ve{n}tekrar sayısını belirtir.
^ ve $: Tüm Dizeyi Doğrulama
^ ve $, bir dizenin başlangıcını ve sonunu temsil eder.
1const regex = /^\d+$/;
2
3console.log(regex.test("123")); // true
4console.log(regex.test("123a")); // false
- Form girdileri gibi tam eşleşme gereken durumlarda önemlidirler.
Gruplama ve Yakalama
Parantez () kullanarak kısmi değerler çıkarabilirsiniz.
1const text = "2025/12/29";
2const regex = /(\d{4})\/(\d{2})\/(\d{2})/;
3const [, year, month, day] = text.match(regex);
4
5console.log(year, month, day); // 2025 12 29
- Tarihleri ve yapılandırılmış dizeleri ayırmak için sıkça kullanılır.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
Düzenli ifadeler güçlüdür, ancak okunması zor hale gelme eğilimindedirler.
1// Hard to read
2const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+$/;- Çok karmaşık hale gelirse, yorum eklemeyi, ifadeleri bölmeyi veya işlemin kendisini gözden geçirmeyi düşünebilirsiniz.
Özet
RegExp, JavaScript'te dize işlemini basit ve doğru şekilde tanımlamak için temel bir özelliktir. Başlangıçta karmaşık düzenli ifadeler öğrenmeniz gerekmez; pratik ihtiyaçlarınıza göre test, match ve replace gibi temel yöntemleri ve sözdizimini kullanmak önemlidir. Düzenli ifadeleri 'özel bilgi' olarak değil, 'düzenli desen gösterimi için araçlar' olarak ele alabilirseniz, giriş doğrulama ve metin işlemenin kalitesini ve okunabilirliğini büyük ölçüde artırırsınız.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.