Merhabalar, 

Bu yazımızda hemen hemen her programlama dilinin vazgeçilmezi ancak aynı zamanda karmaşık gibi görüneni olarak nam yapmış Regex konusunu JavaScript özelinde inceleyeceğiz. 

Öncelikle tanımlamaya geçelim; 
Regular Expression Nedir ? 

Herşeyden önce Regular Expression türkçe karşılığı olarak normal ifadeler olarak tanımlayabiliriz ve temel anlamda nu normal ifadeler bir arama modeli oluşturan bir karakter dizisidir. 

Aradığımızı bulmak için bir arama modeli kullanarak bir dizge veya veri bulmak için normal ifadeler kullanırız.

JavaScript Regex'in farklı yönlerinde olduğu gibi, kendine özgü yöntemleri vardır, bu yöntemler aşağıdaki paragraflarda açıklanmıştır.

Test yöntemiyle Normal İfadeler: Test yöntemi, normal ifadede (Regex olarak da bilinir), dizenin veya desenin bulunup bulunamadığına bağlı olarak doğru veya yanlış değer döndüren bir yöntemdir.

Misal:

let teststr = 'Way to go'; 
let testRegex =/Way/;
testRegex.test(testStr);  //returns true

İleriye ve geriye doğru eğik çizgilerdeki kelime (kod) (eğik çizgi sözdizimi normal bir ifade oluşturmanın bir yoludur) testStr değişkeninde bulmaya çalıştığımız kelimedir, daha sonra test yöntemini kullanarak aslında kelime testRegex değişkeninde mevcuttur ve buna true döndürür.

Match yöntemiyle Normal İfadeler: Match yöntemi, test yöntemine benzer bir yöntemdir, çünkü test yönteminin aksine, eşleştirme yönteminin yalnızca dizenin eşleşmelerini kontrol etmekle kalmaması dışında, verilen dizide veya sayıda modelin mevcut olup olmadığını bulur. Misal:

let matchStr = 'Regular Expressions';
let matchRegex = /Expressions/;
matchStr.match(matchRegex) //returns Expressions;

Yukarıdaki örnekte match yöntemi, dize örneğinin eşleşmelerini kontrol eder ve döndürür. Eşleştirme yönteminin, test yönteminden farklı olarak, eşleşecek dizeyi parametre olarak aldığına dikkat edin.

Değiştirme Yöntemi ile Normal İfadeler: Değiştirme yöntemi, adından da anlaşılacağı gibi, belirtilen bir dizeyi farklı bir dize veya sayıyla 'değiştirir'.

Misal:

var heyStr = "Hey now!";
var byeStr = "Bye";
var res = str.replace("Hey", "Bye")//returns ;

Arama Yöntemiyle Normal İfadeler: Arama yöntemi, belirtilen belirli bir değeri bir dize veya sayı içinde 'arar' ve değerin konumunu döndürür.

Misal:

var heyStr = "Hey now!";
var byeStr = "Bye";
var res = str.replace("Hey", "Bye")//returns "Bye now!" ;

Modifiers ( Değiştiriciler ) : Regex, genellikle kullanıcının daha az kod parçasıyla daha geniş bir desen aralığını eşleştirmesine yardımcı olmak için her biri farklı amaçlar için kullanılan çok çeşitli değiştiricilere sahiptir. En meşhur Normal İfade bayraklarından bazıları g, I vb'dir. Bu bayraklar, bir kalıbı birden fazla kez çıkarmak için kullanılır (tüm oluşumu) ve ayrıca sırasıyla bir kelime veya harfin büyük / küçük harf duyarlı olmasını sağlamak için kullanılır.

Bir Regex'te ters eğik çizginin dışında kullanılan global değiştirici (g), sayının dize değişmezinin tüm oluşumlarını çıkarmak için kullanılır. Küresel örnekten önceki örnekler bize, bir kez görünen belirli bir dizeyi nasıl test edeceğimizi ve çıkaracağımızı ve onu bir kez geri getireceğimizi gösterdi; bu, birden çok kez görünen dizeyi test ederken özellikle stresli ve sorunlu olabilir, neyse ki küresel değiştirici yardım etmek için burada işimize yaramaktadır.

Misal:

let testStr = 'Shake, Shake, Shake into the fire';
let  shakeStr = /Shake/g;
let testStr.match(shakeStr)//returns ['Shake', 'Shake', 'Shake'];

Yukarıdaki örnek, daha önce öğrendiğimiz gibi yaptığı testStr değişkenindeki 'Shake' dizesini eşleştirmeye çalışır, ancak bu sefer g sembolü, 'Shake'in tüm oluşumlarını çıkarır ve bunları bir diziye koyar.

Büyük / Küçük Harfe Duyarsız (i): Adından da anlaşılacağı gibi, büyük / küçük harfe duyarlı olmayan değiştirici, büyük veya küçük harf olsun (büyük veya küçük harf) ne olursa olsun teste veya eşleştirme yönteminin kontrolüne veya bir dizeyi veya deseni çıkarmasına izin verir. 

Misal:

let testStr = 'Hey now';
let heyStr = /hey/i;
let testStr.match(heyStr) //returns  Hey;

Yukarıdaki örnekten de görebileceğimiz gibi, 'hey' için test edilecek dizge, büyük harf yerine küçük harfle yazılmıştır ve hala testStr 'Hey' ile eşleşmektedir.

Normal İfade Kalıpları:

Nokta (.): Bazen bir dizeyi eşleştirmeye çalıştığımızda, test etmeye çalıştığımız tüm karakterleri bilmiyoruz, bize yardımcı olması için nokta simgesini kullanırız. 

Misal:

let  carRegex = 'I bought a new car';
let canRegex = 'It came in a can';
let caRegex = /ca./;
caRegex.test(carRegex)//returns true;
caRegex.test(canRegex) //returns true;

Yukarıdaki örnekte nokta, 'ca' ile başlayan kelimeleri test eder.

Dizi parantezlerinde kullanılan (^): Slash yani eğik çizgiler arasında bir dizi parantezinde kullanılan bu, eşleştirmek istemediğimiz karakterleri belirtmek için kullanılır.

Misal:

let heyRegex = 'Hey';
let testRegex = /[^ey]/; 
heyRegex.match(testRegex) //returns H;

(^): Bu sembol, dizenin kelime veya cümlenin başında bulunup bulunmadığını test etmek için kullanılır. 
Misal:

let askRegex = 'Can I speak to you?';
let testRegex =  /^Ca/;
testRegex.test(askRegex)//returns true;

Dolar işareti ($): Bir dizenin arkasında kullanılan dolar işareti, dizenin bir kelime veya cümlenin sonunda bulunup bulunmadığını kontrol etmek için kullanılır. Misal:

let askRegex = 'Can I speak to you?';
let testRegex =  /^you/;
testRegex.test(askRegex)//returns true;

Kesme işareti (-): Bu genellikle bir dizi parantezinde kullanılır, eşleştirmek istediğimiz veya istemediğimiz bir sayı veya harf aralığını test etmek için kullanılır. 

Misal:

let letterRegex = 'abcdefghi';
let vowelRegex = /[a-e]/; 
letterRegex.match(vowelRegex) //returns [a,b,c,d,e];

Metakarakterler: Bunlar, özel anlam örnekleri olan karakterlerdir:

• / w /: Bu, alfasayısal sembolleri test etmek için kullanılır. 
• / W /: Bu, alfasayısal olmayan sembolleri test etmek için kullanılır. 
• / d /: Bu, yalnızca bir dizedeki veya bir sayı grubundaki rakamları test etmek için kullanılır. 
• / D /: Bu, rakam olmayanları test etmek veya eşleştirmek için kullanılır. 
• / s /: Bu, boşluklarla eşleştirmek için kullanılır. 
• / S /: Bu, boşluk olmayan boşluk olmayan boşlukları eşleştirmek için kullanılır.

Umarım faydalı olmuştur. Esenle kalın...