{"id":37390,"date":"2026-01-02T18:41:01","date_gmt":"2026-01-02T15:41:01","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37390"},"modified":"2026-01-02T18:41:01","modified_gmt":"2026-01-02T15:41:01","slug":"javascript-regular-expressions-for-regular-people","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/","title":{"rendered":"JavaScript Regular Expressions for Regular People"},"content":{"rendered":"<p><body><\/p>\n<h2>JavaScript Regular Expressions for Regular People<\/h2>\n<h3>Giri\u015f: D\u00fczenli \u0130fadelerle Tan\u0131\u015f\u0131n<\/h3>\n<p>\u0130nternet d\u00fcnyas\u0131nda gezinirken, form doldururken, bir arama yaparken veya basit bir metin d\u00fczenlerken, asl\u0131nda fark\u0131nda olmadan d\u00fczenli ifadelerle (Regular Expressions veya k\u0131saca Regex) kar\u015f\u0131la\u015f\u0131rs\u0131n\u0131z. Regex, metinler i\u00e7indeki belirli kal\u0131plar\u0131 tan\u0131mlamak, bulmak, de\u011fi\u015ftirmek veya do\u011frulamak i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir dildir. &#8220;Normal insanlar&#8221; i\u00e7in ilk ba\u015fta biraz korkutucu g\u00f6r\u00fcnebilir; zira karma\u015f\u0131k semboller ve k\u0131saltmalarla dolu bir labirent gibi durur. Ancak endi\u015felenmeyin! Bu makale, JavaScript ba\u011flam\u0131nda d\u00fczenli ifadeleri anlaman\u0131z, kullanman\u0131z ve hatta sevmeniz i\u00e7in bir rehber olacak. Ad\u0131m ad\u0131m ilerleyerek, bu &#8220;sihirli dili&#8221; nas\u0131l \u00e7\u00f6zebilece\u011finizi ve g\u00fcnl\u00fck programlama g\u00f6revlerinizde nas\u0131l kullanabilece\u011finizi ke\u015ffedece\u011fiz.<\/p>\n<p>Neden Regex&#8217;e ihtiyac\u0131m\u0131z var? Hayal edin ki bir e-posta adresinin ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek istiyorsunuz. Veya bir metin i\u00e7indeki t\u00fcm telefon numaralar\u0131n\u0131 bulup belirli bir formata d\u00f6n\u00fc\u015ft\u00fcrmek istiyorsunuz. Belki de bir URL&#8217;den sadece alan ad\u0131n\u0131 \u00e7ekmeniz gerekiyor. Bu t\u00fcr g\u00f6revler i\u00e7in, karakter karakter manuel kontrol yapmak hem \u00e7ok zaman al\u0131c\u0131 hem de hataya a\u00e7\u0131k olacakt\u0131r. \u0130\u015fte burada Regex devreye girer. Tek bir kal\u0131p (pattern) tan\u0131mlayarak, binlerce karakterlik metinler \u00fczerinde saniyeler i\u00e7inde karma\u015f\u0131k aramalar ve manip\u00fclasyonlar yapabilirsiniz. Regex, metin i\u015fleme d\u00fcnyas\u0131n\u0131n \u0130svi\u00e7re \u00e7ak\u0131s\u0131d\u0131r ve JavaScript ile birle\u015fti\u011finde, web uygulamalar\u0131n\u0131zda inan\u0131lmaz bir esneklik ve g\u00fc\u00e7 sunar.<\/p>\n<h3>Regex Temelleri: \u0130lk Ad\u0131mlar<\/h3>\n<p>JavaScript&#8217;te bir d\u00fczenli ifade olu\u015fturman\u0131n iki temel yolu vard\u0131r:<\/p>\n<h4>1. Literal Notasyon (Tavsiye Edilen)<\/h4>\n<p>Bu y\u00f6ntem, genellikle daha basit ve daha okunabilir oldu\u011fu i\u00e7in tercih edilir. Deseni e\u011fik \u00e7izgiler (<code>\/<\/code>) aras\u0131na yazars\u0131n\u0131z ve ard\u0131ndan iste\u011fe ba\u011fl\u0131 bayraklar\u0131 (flags) eklersiniz.<\/p>\n<pre><code class=\"language-javascript\">const desen = \/kal\u0131p\/bayraklar;<\/code><\/pre>\n<p>\u00d6rne\u011fin, &#8220;hello&#8221; kelimesini arayan ve b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 olmayan bir Regex:<\/p>\n<pre><code class=\"language-javascript\">const merhabaDeseni = \/hello\/i; \/\/ 'i' bayra\u011f\u0131 b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131zl\u0131\u011f\u0131 sa\u011flar<\/code><\/pre>\n<h4>2. RegExp Kurucusu<\/h4>\n<p>Bu y\u00f6ntem, deseni veya bayraklar\u0131 dinamik olarak bir de\u011fi\u015fkenden olu\u015fturman\u0131z gerekti\u011finde kullan\u0131\u015fl\u0131d\u0131r. Deseni ve bayraklar\u0131 string olarak ge\u00e7irirsiniz.<\/p>\n<pre><code class=\"language-javascript\">const desen = new RegExp(\"kal\u0131p\", \"bayraklar\");<\/code><\/pre>\n<p>Ayn\u0131 &#8220;hello&#8221; \u00f6rne\u011fi bu \u015fekilde yaz\u0131labilir:<\/p>\n<pre><code class=\"language-javascript\">const merhabaDeseniDinamik = new RegExp(\"hello\", \"i\");<\/code><\/pre>\n<p><code>RegExp<\/code> kurucusunu kullan\u0131rken, e\u011fer deseninizde ters e\u011fik \u00e7izgi (<code>\\<\/code>) gibi \u00f6zel karakterler varsa, bunlar\u0131 \u00e7ift ters e\u011fik \u00e7izgi (<code>\\\\<\/code>) ile ka\u00e7\u0131rman\u0131z gerekti\u011fini unutmay\u0131n, \u00e7\u00fcnk\u00fc string i\u00e7inde ters e\u011fik \u00e7izgi zaten bir ka\u00e7\u0131\u015f karakteridir. Literal notasyonda bu sorun genellikle olmaz, \u00e7\u00fcnk\u00fc Regex motoru bunu do\u011frudan i\u015fler.<\/p>\n<h4>Yayg\u0131n Regex Bayraklar\u0131<\/h4>\n<p>Bayraklar, d\u00fczenli ifadenin davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftiren tek karakterlik ayarlard\u0131r. En s\u0131k kullan\u0131lanlar \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>g<\/code> (global):<\/strong> Varsay\u0131lan olarak, Regex metindeki ilk e\u015fle\u015fmeyi buldu\u011funda durur. <code>g<\/code> bayra\u011f\u0131, t\u00fcm e\u015fle\u015fmeleri bulmaya devam etmesini sa\u011flar.<br \/>\n*   <strong><code>i<\/code> (case-insensitive):<\/strong> B\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z arama yapar. \u00d6rne\u011fin, <code>\/a\/i<\/code> hem &#8220;a&#8221; hem de &#8220;A&#8221; ile e\u015fle\u015fir.<br \/>\n*   <strong><code>m<\/code> (multiline):<\/strong> \u00c7ok sat\u0131rl\u0131 mod. <code>^<\/code> ve <code>$<\/code> \u00e7apalar\u0131n\u0131n sadece t\u00fcm metnin ba\u015flang\u0131c\u0131\/sonu yerine, her sat\u0131r\u0131n ba\u015flang\u0131c\u0131\/sonu ile e\u015fle\u015fmesini sa\u011flar.<br \/>\n*   <strong><code>s<\/code> (dotAll):<\/strong> <code>.<\/code> karakterinin normalde yeni sat\u0131r karakterleri (<code>\\n<\/code>, <code>\\r<\/code>) ile e\u015fle\u015fmemesini sa\u011flar. <code>s<\/code> bayra\u011f\u0131 ile <code>.<\/code> her karakterle, yeni sat\u0131r karakterleri dahil, e\u015fle\u015fir.<br \/>\n*   <strong><code>u<\/code> (unicode):<\/strong> Unicode karakter setlerini do\u011fru bir \u015fekilde i\u015flemesini sa\u011flar. \u00d6zellikle emoji veya di\u011fer uluslararas\u0131 karakterlerle \u00e7al\u0131\u015f\u0131rken \u00f6nemlidir.<br \/>\n*   <strong><code>y<\/code> (sticky):<\/strong> E\u015fle\u015fmenin sadece <code>lastIndex<\/code> \u00f6zelli\u011finin i\u015faret etti\u011fi konumdan itibaren ba\u015flamas\u0131n\u0131 sa\u011flar. <code>g<\/code> bayra\u011f\u0131 ile birlikte kullan\u0131l\u0131r.<\/p>\n<h3>Karakter S\u0131n\u0131flar\u0131: Ne Arad\u0131\u011f\u0131m\u0131z\u0131 Belirtmek<\/h3>\n<p>Regex&#8217;in temel yap\u0131 ta\u015flar\u0131, belirli t\u00fcrdeki karakterleri tan\u0131mlamam\u0131z\u0131 sa\u011flayan karakter s\u0131n\u0131flar\u0131d\u0131r.<\/p>\n<h4>1. Harf ve Rakamlar (Literaller)<\/h4>\n<p>En basit haliyle, bir karakteri do\u011frudan yazarak onu arayabilirsiniz:<\/p>\n<pre><code class=\"language-javascript\">const arama = \/a\/; \/\/ Sadece 'a' karakterini arar\nconst sayi = \/5\/; \/\/ Sadece '5' karakterini arar\nconst kelime = \/elma\/; \/\/ 'elma' kelimesini arar<\/code><\/pre>\n<h4>2. <code>[]<\/code> K\u00f6\u015feli Parantezler (Karakter K\u00fcmeleri)<\/h4>\n<p>K\u00f6\u015feli parantezler, i\u00e7erisindeki herhangi bir karakterle e\u015fle\u015fen bir set tan\u0131mlar.<\/p>\n<p>*   <code>[abc]<\/code>: &#8220;a&#8221;, &#8220;b&#8221; veya &#8220;c&#8221; karakterlerinden herhangi biriyle e\u015fle\u015fir.<br \/>\n*   <code>[0-9]<\/code>: Herhangi bir rakamla (0&#8217;dan 9&#8217;a) e\u015fle\u015fir.<br \/>\n*   <code>[a-z]<\/code>: Herhangi bir k\u00fc\u00e7\u00fck harf ile e\u015fle\u015fir.<br \/>\n*   <code>[A-Z]<\/code>: Herhangi bir b\u00fcy\u00fck harf ile e\u015fle\u015fir.<br \/>\n*   <code>[a-zA-Z]<\/code>: Herhangi bir harf ile e\u015fle\u015fir (b\u00fcy\u00fck veya k\u00fc\u00e7\u00fck).<br \/>\n*   <code>[0-9a-fA-F]<\/code>: Onalt\u0131l\u0131k (hexadecimal) rakamlarla e\u015fle\u015fir.<\/p>\n<p>\u00d6rnek: Bir metinde &#8220;a&#8221;, &#8220;e&#8221; veya &#8220;i&#8221; harflerini bulal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Merhaba D\u00fcnya\";\nconst sesliler = \/[aei]\/g;\nconsole.log(metin.match(sesliler)); \/\/ \u00c7\u0131kt\u0131: [\"e\", \"a\", \"a\", \"\u00fc\", \"a\"]<\/code><\/pre>\n<h4>3. <code>[^]<\/code> Hari\u00e7 Tutma (Negasyon)<\/h4>\n<p>K\u00f6\u015feli parantez i\u00e7inde <code>^<\/code> karakteri kullan\u0131ld\u0131\u011f\u0131nda, bu karakter k\u00fcmesindeki <em>olmayan<\/em> herhangi bir karakterle e\u015fle\u015fir.<\/p>\n<p>*   <code>[^abc]<\/code>: &#8220;a&#8221;, &#8220;b&#8221; veya &#8220;c&#8221; d\u0131\u015f\u0131ndaki herhangi bir karakterle e\u015fle\u015fir.<br \/>\n*   <code>[^0-9]<\/code>: Herhangi bir rakam d\u0131\u015f\u0131ndaki karakterle e\u015fle\u015fir.<\/p>\n<p>\u00d6rnek: Bir metinde rakam olmayan t\u00fcm karakterleri bulal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Fiyat: 123 TL\";\nconst rakamDisi = \/[^0-9]\/g;\nconsole.log(metin.match(rakamDisi)); \/\/ \u00c7\u0131kt\u0131: [\"F\", \"i\", \"y\", \"a\", \"t\", \":\", \" \", \" \", \"T\", \"L\"]<\/code><\/pre>\n<h4>4. K\u0131sayol Karakter S\u0131n\u0131flar\u0131<\/h4>\n<p>Bu k\u0131sayollar, s\u0131k kullan\u0131lan karakter k\u00fcmelerini daha k\u0131sa ve okunabilir bir \u015fekilde ifade etmenizi sa\u011flar:<\/p>\n<p>*   <strong><code>\\d<\/code><\/strong>: Herhangi bir rakamla e\u015fle\u015fir (digit). <code>[0-9]<\/code> ile ayn\u0131d\u0131r.<br \/>\n*   <strong><code>\\D<\/code><\/strong>: Rakam olmayan herhangi bir karakterle e\u015fle\u015fir. <code>[^0-9]<\/code> ile ayn\u0131d\u0131r.<br \/>\n*   <strong><code>\\w<\/code><\/strong>: Herhangi bir kelime karakteriyle e\u015fle\u015fir (word character). Harfler, rakamlar ve alt \u00e7izgi (<code>_<\/code>). <code>[a-zA-Z0-9_]<\/code> ile ayn\u0131d\u0131r.<br \/>\n*   <strong><code>\\W<\/code><\/strong>: Kelime karakteri olmayan herhangi bir karakterle e\u015fle\u015fir. <code>[^a-zA-Z0-9_]<\/code> ile ayn\u0131d\u0131r.<br \/>\n*   <strong><code>\\s<\/code><\/strong>: Herhangi bir bo\u015fluk karakteriyle e\u015fle\u015fir (whitespace). Bo\u015fluk, sekme (<code>\\t<\/code>), yeni sat\u0131r (<code>\\n<\/code>), sat\u0131r ba\u015f\u0131 (<code>\\r<\/code>) vb.<br \/>\n*   <strong><code>\\S<\/code><\/strong>: Bo\u015fluk karakteri olmayan herhangi bir karakterle e\u015fle\u015fir.<br \/>\n*   <strong><code>.<\/code><\/strong>: Yeni sat\u0131r karakterleri (<code>\\n<\/code>, <code>\\r<\/code>) hari\u00e7 herhangi bir karakterle e\u015fle\u015fir. <code>s<\/code> (dotAll) bayra\u011f\u0131 ile yeni sat\u0131r karakterleri de dahil t\u00fcm karakterlerle e\u015fle\u015fir.<\/p>\n<p>\u00d6rnek: Bir metindeki t\u00fcm kelimeleri bulal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Merhaba, d\u00fcnya! Nas\u0131ls\u0131n?\";\nconst kelimeler = \/\\w+\/g; \/\/ '+' niceleyicisi ile birlikte kullan\u0131l\u0131r, bir veya daha fazla kelime karakteri\nconsole.log(metin.match(kelimeler)); \/\/ \u00c7\u0131kt\u0131: [\"Merhaba\", \"d\u00fcnya\", \"Nas\u0131ls\u0131n\"]<\/code><\/pre>\n<h3>Niceleyiciler (Quantifiers): Ka\u00e7 Kere?<\/h3>\n<p>Niceleyiciler, bir karakterin, karakter s\u0131n\u0131f\u0131n\u0131n veya grubun ka\u00e7 kez tekrar edebilece\u011fini belirtir.<\/p>\n<p><em>   <strong><code><\/em><\/code> (S\u0131f\u0131r veya Daha Fazla):<\/strong> \u00d6nceki \u00f6\u011fenin s\u0131f\u0131r veya daha fazla tekrar\u0131yla e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/a*\/ \/\/ S\u0131f\u0131r veya daha fazla 'a' ile e\u015fle\u015fir (\"\" veya \"a\" veya \"aaa\")<\/code><\/pre>\n<p>*   <strong><code>+<\/code> (Bir veya Daha Fazla):<\/strong> \u00d6nceki \u00f6\u011fenin bir veya daha fazla tekrar\u0131yla e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/a+\/ \/\/ Bir veya daha fazla 'a' ile e\u015fle\u015fir (\"a\" veya \"aaa\", ama \"\" ile e\u015fle\u015fmez)<\/code><\/pre>\n<p>*   <strong><code>?<\/code> (S\u0131f\u0131r veya Bir):<\/strong> \u00d6nceki \u00f6\u011fenin s\u0131f\u0131r veya bir tekrar\u0131yla e\u015fle\u015fir (iste\u011fe ba\u011fl\u0131).<\/p>\n<pre><code class=\"language-javascript\">\/colou?r\/ \/\/ \"color\" veya \"colour\" ile e\u015fle\u015fir<\/code><\/pre>\n<p>*   <strong><code>{n}<\/code> (Tam Olarak n Kez):<\/strong> \u00d6nceki \u00f6\u011fenin tam olarak <code>n<\/code> kez tekrar\u0131yla e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/\\d{3}\/ \/\/ Tam olarak 3 rakamla e\u015fle\u015fir (\"123\")<\/code><\/pre>\n<p>*   <strong><code>{n,}<\/code> (n veya Daha Fazla):<\/strong> \u00d6nceki \u00f6\u011fenin <code>n<\/code> veya daha fazla tekrar\u0131yla e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/\\d{3,}\/ \/\/ 3 veya daha fazla rakamla e\u015fle\u015fir (\"123\", \"12345\")<\/code><\/pre>\n<p>*   <strong><code>{n,m}<\/code> (n ile m Aras\u0131):<\/strong> \u00d6nceki \u00f6\u011fenin en az <code>n<\/code>, en fazla <code>m<\/code> kez tekrar\u0131yla e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/\\d{3,5}\/ \/\/ 3, 4 veya 5 rakamla e\u015fle\u015fir (\"123\", \"1234\", \"12345\")<\/code><\/pre>\n<h4>A\u00e7g\u00f6zl\u00fc (Greedy) ve Tembel (Lazy) Niceleyiciler<\/h4>\n<p>Varsay\u0131lan olarak, niceleyiciler &#8220;a\u00e7g\u00f6zl\u00fcd\u00fcr&#8221; (greedy). Bu, m\u00fcmk\u00fcn olan en uzun e\u015fle\u015fmeyi bulmaya \u00e7al\u0131\u015ft\u0131klar\u0131 anlam\u0131na gelir. Niceleyicinin sonuna <code>?<\/code> ekleyerek onu &#8220;tembel&#8221; (lazy) yapabilirsiniz, bu da m\u00fcmk\u00fcn olan en k\u0131sa e\u015fle\u015fmeyi bulmaya \u00e7al\u0131\u015faca\u011f\u0131 anlam\u0131na gelir.<\/p>\n<p>\u00d6rnek: HTML etiketlerini e\u015fle\u015ftirme.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"<div>Merhaba<\/div><span>D\u00fcnya<\/span>\";\nconst greedyDesen = \/<.*>\/g; \/\/ A\u00e7g\u00f6zl\u00fc: \u0130lk '<' ile son '>' aras\u0131ndaki her \u015feyi e\u015fle\u015ftirir\nconsole.log(metin.match(greedyDesen)); \/\/ \u00c7\u0131kt\u0131: [\"<div>Merhaba<\/div><span>D\u00fcnya<\/span>\"] - T\u00fcm stringi e\u015fle\u015ftirdi!\n\nconst lazyDesen = \/<.*?>\/g; \/\/ Tembel: Her '<' ile en yak\u0131n '>' aras\u0131ndaki her \u015feyi e\u015fle\u015ftirir\nconsole.log(metin.match(lazyDesen)); \/\/ \u00c7\u0131kt\u0131: [\"<div>\", \"<\/div>\", \"<span>\", \"<\/span>\"] - \u0130stedi\u011fimiz gibi ayr\u0131 etiketleri e\u015fle\u015ftirdi.<\/code><\/pre>\n<h3>\u00c7apalar (Anchors): Konum Belirleme<\/h3>\n<p>\u00c7apalar, bir e\u015fle\u015fmenin metin i\u00e7inde belirli bir konumda ger\u00e7ekle\u015fmesini sa\u011flar.<\/p>\n<p>*   <strong><code>^<\/code> (Metin\/Sat\u0131r Ba\u015f\u0131):<\/strong> E\u015fle\u015fmenin metnin veya <code>m<\/code> bayra\u011f\u0131 kullan\u0131ld\u0131\u011f\u0131nda her sat\u0131r\u0131n ba\u015f\u0131nda ger\u00e7ekle\u015fmesini sa\u011flar.<\/p>\n<pre><code class=\"language-javascript\">\/^Merhaba\/ \/\/ \"Merhaba D\u00fcnya\" ile e\u015fle\u015fir, ama \"D\u00fcnya Merhaba\" ile e\u015fle\u015fmez<\/code><\/pre>\n<p>*   <strong><code>$<\/code> (Metin\/Sat\u0131r Sonu):<\/strong> E\u015fle\u015fmenin metnin veya <code>m<\/code> bayra\u011f\u0131 kullan\u0131ld\u0131\u011f\u0131nda her sat\u0131r\u0131n sonunda ger\u00e7ekle\u015fmesini sa\u011flar.<\/p>\n<pre><code class=\"language-javascript\">\/D\u00fcnya$\/ \/\/ \"Merhaba D\u00fcnya\" ile e\u015fle\u015fir, ama \"D\u00fcnya Merhaba\" ile e\u015fle\u015fmez<\/code><\/pre>\n<p>*   <strong><code>\\b<\/code> (Kelime S\u0131n\u0131r\u0131):<\/strong> Bir kelime karakteri ile kelime karakteri olmayan bir karakter (veya metnin ba\u015f\u0131\/sonu) aras\u0131ndaki s\u0131n\u0131r\u0131 e\u015fle\u015ftirir.<\/p>\n<pre><code class=\"language-javascript\">\/\\bcat\\b\/ \/\/ \"cat\" kelimesiyle e\u015fle\u015fir, ama \"catalog\" veya \"tomcat\" ile e\u015fle\u015fmez<\/code><\/pre>\n<p>*   <strong><code>\\B<\/code> (Kelime S\u0131n\u0131r\u0131 De\u011fil):<\/strong> <code>\\b<\/code>&#8216;nin tam tersi; bir kelime s\u0131n\u0131r\u0131 olmayan bir konumu e\u015fle\u015ftirir.<\/p>\n<pre><code class=\"language-javascript\">\/\\Bcat\\B\/ \/\/ \"tomcat\" i\u00e7indeki \"cat\" ile e\u015fle\u015fir, ama \"cat\" veya \"catalog\" ile e\u015fle\u015fmez<\/code><\/pre>\n<p>\u00d6rnek: Bir metinde sadece tam &#8220;elma&#8221; kelimesini bulal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Elma yemek g\u00fczeldir. Elmal\u0131 turta severim. Elma\";\nconst tamElma = \/\\belma\\b\/gi; \/\/ 'i' b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131zl\u0131\u011f\u0131 i\u00e7in\nconsole.log(metin.match(tamElma)); \/\/ \u00c7\u0131kt\u0131: [\"Elma\", \"Elma\"]<\/code><\/pre>\n<h3>Gruplama ve Yakalama: B\u00f6l\u00fcmlere Ay\u0131rma<\/h3>\n<p>Parantezler <code>()<\/code> Regex&#8217;te birden fazla ama\u00e7 i\u00e7in kullan\u0131l\u0131r:<\/p>\n<h4>1. Yakalay\u0131c\u0131 Gruplar (Capturing Groups)<\/h4>\n<p>Parantezler i\u00e7indeki bir deseni tek bir birim olarak gruplar ve bu grubun e\u015fle\u015fen k\u0131sm\u0131n\u0131 daha sonra eri\u015fmek \u00fczere yakalar.<\/p>\n<pre><code class=\"language-javascript\">const tarih = \/(\\d{2})\\\/(\\d{2})\\\/(\\d{4})\/; \/\/ G\u00fcn, ay ve y\u0131l i\u00e7in 3 yakalay\u0131c\u0131 grup\nconst metin = \"Bug\u00fcn\u00fcn tarihi 25\/10\/2023.\";\nconst eslesme = metin.match(tarih);\nconsole.log(eslesme);\n\/*\n\u00c7\u0131kt\u0131 (yakla\u015f\u0131k):\n[\n  \"25\/10\/2023\", \/\/ Tam e\u015fle\u015fme\n  \"25\",         \/\/ 1. yakalay\u0131c\u0131 grup\n  \"10\",         \/\/ 2. yakalay\u0131c\u0131 grup\n  \"2023\",       \/\/ 3. yakalay\u0131c\u0131 grup\n  index: 16,\n  input: \"Bug\u00fcn\u00fcn tarihi 25\/10\/2023.\",\n  groups: undefined\n]\n*\/<\/code><\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>match<\/code> metodu tam e\u015fle\u015fmenin yan\u0131 s\u0131ra yakalay\u0131c\u0131 gruplar\u0131n e\u015fle\u015fmelerini de bir dizi olarak d\u00f6nd\u00fcrd\u00fc.<\/p>\n<h4>2. Geri Referanslar (Backreferences)<\/h4>\n<p><code>\\n<\/code> s\u00f6zdizimi ile daha \u00f6nce yakalanm\u0131\u015f bir gruba referans verebilirsiniz. <code>n<\/code>, grubun s\u0131ras\u0131d\u0131r (1&#8217;den ba\u015flar).<\/p>\n<p>\u00d6rnek: Tekrar eden kelimeleri bulal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Bu bir test test c\u00fcmlesidir. G\u00fczel g\u00fczel hava.\";\nconst tekrarEdenKelime = \/\\b(\\w+)\\s+\\1\\b\/g; \/\/ \\1 ilk yakalay\u0131c\u0131 gruba (\\w+) referans verir\nconsole.log(metin.match(tekrarEdenKelime)); \/\/ \u00c7\u0131kt\u0131: [\"test test\", \"g\u00fczel g\u00fczel\"]<\/code><\/pre>\n<h4>3. Yakalay\u0131c\u0131 Olmayan Gruplar (Non-Capturing Groups)<\/h4>\n<p><code>(?:\\...)<\/code> s\u00f6zdizimi ile bir deseni gruplars\u0131n\u0131z, ancak bu grubun e\u015fle\u015fmesini yakalamazs\u0131n\u0131z. Bu, performans\u0131 art\u0131rabilir ve <code>match<\/code> dizisinin daha temiz olmas\u0131n\u0131 sa\u011flayabilir.<\/p>\n<pre><code class=\"language-javascript\">const desen = \/(?:http|https):\\\/\\\/(www\\.)?(\\w+\\.\\w+)\/; \/\/ http\/https grubu yakalanmaz\nconst metin = \"Web sitemiz https:\/\/www.example.com adresinde.\";\nconst eslesme = metin.match(desen);\nconsole.log(eslesme);\n\/*\n\u00c7\u0131kt\u0131 (yakla\u015f\u0131k):\n[\n  \"https:\/\/www.example.com\",\n  \"www.\",         \/\/ 1. yakalay\u0131c\u0131 grup (www.)\n  \"example.com\",  \/\/ 2. yakalay\u0131c\u0131 grup (alan ad\u0131)\n  \/\/ ...\n]\n*\/\n\/\/ E\u011fer (http|https) yakalay\u0131c\u0131 grup olsayd\u0131, \"https\" de dizide olurdu.<\/code><\/pre>\n<h4>4. \u0130leriye ve Geriye Bak\u0131\u015flar (Lookaheads &#038; Lookbehinds)<\/h4>\n<p>Bunlar daha geli\u015fmi\u015f gruplama teknikleridir ve belirli bir deseni e\u015fle\u015ftirmeden \u00f6nce veya sonra belirli bir ko\u015fulun olup olmad\u0131\u011f\u0131n\u0131 kontrol etmenizi sa\u011flar. Deseni e\u015fle\u015fmeye dahil etmezler.<\/p>\n<p>*   <strong>Pozitif \u0130leriye Bak\u0131\u015f <code>(?=...)<\/code>:<\/strong> Yaln\u0131zca <code>...<\/code> deseni takip ediyorsa e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/\\w+(?=\\sTL)\/g; \/\/ \" TL\" ile biten bir kelimeyi e\u015fle\u015ftirir, ama \" TL\" k\u0131sm\u0131n\u0131 e\u015fle\u015fmeye dahil etmez\n    const metin = \"Fiyat 150 TL. \u0130ndirim 20 TL.\";\n    console.log(metin.match(\/\\d+(?=\\sTL)\/g)); \/\/ \u00c7\u0131kt\u0131: [\"150\", \"20\"]<\/code><\/pre>\n<p>*   <strong>Negatif \u0130leriye Bak\u0131\u015f <code>(?!...)<\/code>:<\/strong> Yaln\u0131zca <code>...<\/code> deseni takip etmiyorsa e\u015fle\u015fir.<\/p>\n<pre><code class=\"language-javascript\">\/\\b(?!admin)\\w+\\b\/g; \/\/ \"admin\" olmayan kelimeleri e\u015fle\u015ftirir\n    const metin = \"admin user guest\";\n    console.log(metin.match(\/\\b(?!admin)\\w+\\b\/g)); \/\/ \u00c7\u0131kt\u0131: [\"user\", \"guest\"]<\/code><\/pre>\n<p>*   <strong>Pozitif Geriye Bak\u0131\u015f <code>(?<=...)<\/code>:<\/strong> Yaln\u0131zca <code>...<\/code> deseni ile ba\u015fl\u0131yorsa e\u015fle\u015fir (ES2018 ile geldi).<\/p>\n<pre><code class=\"language-javascript\">\/(?<=\\$)\\d+\/g; \/\/ \"$\" karakterinden sonra gelen say\u0131lar\u0131 e\u015fle\u015ftirir, ama \"$\" karakterini e\u015fle\u015fmeye dahil etmez\n    const metin = \"\u00dcr\u00fcn fiyat\u0131 $100 ve $250.\";\n    console.log(metin.match(\/(?<=\\$)\\d+\/g)); \/\/ \u00c7\u0131kt\u0131: [\"100\", \"250\"]<\/code><\/pre>\n<p>*   <strong>Negatif Geriye Bak\u0131\u015f <code>(?<!...)<\/code>:<\/strong> Yaln\u0131zca <code>...<\/code> deseni ile ba\u015flam\u0131yorsa e\u015fle\u015fir (ES2018 ile geldi).<\/p>\n<pre><code class=\"language-javascript\">\/(?<!non-)\\bcompliant\\b\/g; \/\/ \"non-\" ile ba\u015flamayan \"compliant\" kelimesini e\u015fle\u015ftirir\n    const metin = \"compliant, non-compliant, fully compliant\";\n    console.log(metin.match(\/(?<!non-)\\bcompliant\\b\/g)); \/\/ \u00c7\u0131kt\u0131: [\"compliant\", \"compliant\"]<\/code><\/pre>\n<h3>Alternasyon ve Ka\u00e7\u0131\u015f Karakterleri<\/h3>\n<h4>1. <code>|<\/code> (VEYA Operat\u00f6r\u00fc)<\/h4>\n<p>Dikey \u00e7izgi, iki veya daha fazla desen aras\u0131nda bir \"VEYA\" ili\u015fkisi kurar. Bir desenin di\u011ferinden biriyle e\u015fle\u015fmesini istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">\/(elma|armut|muz)\/ \/\/ \"elma\", \"armut\" veya \"muz\" ile e\u015fle\u015fir<\/code><\/pre>\n<p>\u00d6rnek: Bir metindeki renk isimlerini bulal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"K\u0131rm\u0131z\u0131 araba, mavi g\u00f6ky\u00fcz\u00fc, ye\u015fil \u00e7imen.\";\nconst renkler = \/(k\u0131rm\u0131z\u0131|mavi|ye\u015fil)\/gi;\nconsole.log(metin.match(renkler)); \/\/ \u00c7\u0131kt\u0131: [\"K\u0131rm\u0131z\u0131\", \"mavi\", \"ye\u015fil\"]<\/code><\/pre>\n<h4>2. \u00d6zel Karakterlerden Ka\u00e7\u0131\u015f (<code>\\<\/code>)<\/h4>\n<p>Regex'in baz\u0131 karakterleri \u00f6zel anlamlara sahiptir (<code>.<\/code>, <code>*<\/code>, <code>+<\/code>, <code>?<\/code>, <code>[<\/code>, <code>]<\/code>, <code>(<\/code>, <code>)<\/code>, <code>{<\/code>, <code>}<\/code>, <code>^<\/code>, <code>$<\/code>, <code>|<\/code>, <code>\\<\/code>, <code>\/<\/code>). E\u011fer bu karakterleri literal olarak (\u00f6zel anlamlar\u0131 olmadan) e\u015fle\u015ftirmek isterseniz, \u00f6n\u00fcne bir ters e\u011fik \u00e7izgi (<code>\\<\/code>) koyarak onlar\u0131 ka\u00e7\u0131rman\u0131z gerekir.<\/p>\n<p>\u00d6rnek: Bir metinde <code>.<\/code> (nokta) karakterini aramak.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Bu bir c\u00fcmle sonu.\";\nconst nokta = \/\\.\/g; \/\/ Noktay\u0131 literal olarak arar\nconsole.log(metin.match(nokta)); \/\/ \u00c7\u0131kt\u0131: [\".\"]\n\n\/\/ E\u011fer ka\u00e7masayd\u0131k:\nconst herKarakter = \/.\/g; \/\/ Yeni sat\u0131r hari\u00e7 her karakterle e\u015fle\u015fir\nconsole.log(metin.match(herKarakter)); \/\/ \u00c7\u0131kt\u0131: [\"B\", \"u\", \" \", \"b\", \"i\", \"r\", \" \", \"c\", \"\u00fc\", \"m\", \"l\", \"e\", \" \", \"s\", \"o\", \"n\", \"u\"]<\/code><\/pre>\n<h3>JavaScript String Metotlar\u0131 ve Regex<\/h3>\n<p>JavaScript'in <code>String<\/code> prototipi, d\u00fczenli ifadelerle \u00e7al\u0131\u015fmak i\u00e7in birka\u00e7 kullan\u0131\u015fl\u0131 metoda sahiptir.<\/p>\n<h4>1. <code>string.match(regex)<\/code><\/h4>\n<p>Bir string'i bir Regex deseniyle e\u015fle\u015ftirmeye \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <code>g<\/code> bayra\u011f\u0131 yoksa: \u0130lk e\u015fle\u015fmeyi i\u00e7eren bir dizi d\u00f6nd\u00fcr\u00fcr (yakalay\u0131c\u0131 gruplar dahil). E\u015fle\u015fme yoksa <code>null<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>g<\/code> bayra\u011f\u0131 varsa: T\u00fcm e\u015fle\u015fmeleri i\u00e7eren bir dizi d\u00f6nd\u00fcr\u00fcr. Yakalay\u0131c\u0131 gruplar\u0131 d\u00f6nd\u00fcrmez, sadece tam e\u015fle\u015fmeleri. E\u015fle\u015fme yoksa <code>null<\/code> d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Merhaba d\u00fcnya, merhaba JavaScript!\";\nconst desen = \/merhaba\/gi;\nconsole.log(metin.match(desen)); \/\/ \u00c7\u0131kt\u0131: [\"Merhaba\", \"merhaba\"]<\/code><\/pre>\n<h4>2. <code>string.matchAll(regex)<\/code> (ES2020)<\/h4>\n<p><code>g<\/code> bayra\u011f\u0131 zorunludur. E\u015fle\u015fmelerin bir yineleyicisini (iterator) d\u00f6nd\u00fcr\u00fcr. Her e\u015fle\u015fme, <code>match()<\/code> metodunun <code>g<\/code> bayra\u011f\u0131 olmadan d\u00f6nd\u00fcrd\u00fc\u011f\u00fc dizi format\u0131ndad\u0131r (tam e\u015fle\u015fme ve yakalay\u0131c\u0131 gruplar).<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Merhaba d\u00fcnya, merhaba JavaScript!\";\nconst desen = \/merhaba (\\w+)\/gi; \/\/ Yakalay\u0131c\u0131 grup ile\nconst eslesmeler = metin.matchAll(desen);\n\nfor (const eslesme of eslesmeler) {\n  console.log(eslesme);\n  \/*\n  \u00c7\u0131kt\u0131 (her iterasyonda):\n  [\"Merhaba d\u00fcnya\", \"d\u00fcnya\", index: 0, input: \"...\", groups: undefined]\n  [\"merhaba JavaScript\", \"JavaScript\", index: 15, input: \"...\", groups: undefined]\n  *\/\n}<\/code><\/pre>\n<h4>3. <code>string.search(regex)<\/code><\/h4>\n<p>Bir string i\u00e7inde Regex deseniyle e\u015fle\u015fen ilk alt dizinin ba\u015flang\u0131\u00e7 indeksini d\u00f6nd\u00fcr\u00fcr. E\u015fle\u015fme bulunamazsa <code>-1<\/code> d\u00f6nd\u00fcr\u00fcr. <code>g<\/code> bayra\u011f\u0131 bu metot i\u00e7in bir fark yaratmaz, her zaman ilk e\u015fle\u015fmeyi bulur.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Bug\u00fcn hava g\u00fczel.\";\nconsole.log(metin.search(\/hava\/)); \/\/ \u00c7\u0131kt\u0131: 7\nconsole.log(metin.search(\/ya\u011fmur\/)); \/\/ \u00c7\u0131kt\u0131: -1<\/code><\/pre>\n<h4>4. <code>string.replace(regex, replacement)<\/code><\/h4>\n<p>Regex deseniyle e\u015fle\u015fen alt dizileri belirtilen <code>replacement<\/code> ile de\u011fi\u015ftirir.<br \/>\n*   <code>g<\/code> bayra\u011f\u0131 yoksa: Sadece ilk e\u015fle\u015fmeyi de\u011fi\u015ftirir.<br \/>\n*   <code>g<\/code> bayra\u011f\u0131 varsa: T\u00fcm e\u015fle\u015fmeleri de\u011fi\u015ftirir.<br \/>\n<code>replacement<\/code> bir string veya bir fonksiyon olabilir. String olarak kullan\u0131ld\u0131\u011f\u0131nda, <code>$1<\/code>, <code>$2<\/code> gibi ifadelerle yakalay\u0131c\u0131 gruplara referans verebilirsiniz.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Merhaba d\u00fcnya, merhaba JavaScript!\";\n\/\/ \u0130lk e\u015fle\u015fmeyi de\u011fi\u015ftir\nconsole.log(metin.replace(\/merhaba\/i, \"Selam\")); \/\/ \u00c7\u0131kt\u0131: \"Selam d\u00fcnya, merhaba JavaScript!\"\n\n\/\/ T\u00fcm e\u015fle\u015fmeleri de\u011fi\u015ftir\nconsole.log(metin.replace(\/merhaba\/gi, \"Selam\")); \/\/ \u00c7\u0131kt\u0131: \"Selam d\u00fcnya, Selam JavaScript!\"\n\n\/\/ Yakalay\u0131c\u0131 gruplar\u0131 kullanarak format de\u011fi\u015ftirme\nconst tarih = \"25-10-2023\";\nconst tarihDeseni = \/(\\d{2})-(\\d{2})-(\\d{4})\/;\nconsole.log(tarih.replace(tarihDeseni, \"$3\/$2\/$1\")); \/\/ \u00c7\u0131kt\u0131: \"2023\/10\/25\"\n\n\/\/ Fonksiyon ile de\u011fi\u015ftirme\nconst metin2 = \"apple orange banana\";\nconsole.log(metin2.replace(\/\\b(\\w+)\\b\/g, (match) => match.toUpperCase())); \/\/ \u00c7\u0131kt\u0131: \"APPLE ORANGE BANANA\"<\/code><\/pre>\n<h4>5. <code>string.split(regex)<\/code><\/h4>\n<p>Bir string'i Regex deseniyle belirlenen ayra\u00e7lara g\u00f6re bir diziye b\u00f6ler.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"elma,armut;muz portakal\";\nconsole.log(metin.split(\/[,; ]\/)); \/\/ Virg\u00fcl, noktal\u0131 virg\u00fcl veya bo\u015flu\u011fa g\u00f6re ay\u0131r\u0131r\n\/\/ \u00c7\u0131kt\u0131: [\"elma\", \"armut\", \"muz\", \"portakal\"]<\/code><\/pre>\n<h3>JavaScript RegExp Metotlar\u0131<\/h3>\n<p><code>RegExp<\/code> nesnesinin kendisi de Regex ile \u00e7al\u0131\u015fmak i\u00e7in metotlara sahiptir.<\/p>\n<h4>1. <code>regexp.test(string)<\/code><\/h4>\n<p>Bir string'in Regex deseniyle e\u015fle\u015fip e\u015fle\u015fmedi\u011fini kontrol eder. <code>true<\/code> veya <code>false<\/code> d\u00f6nd\u00fcr\u00fcr. Sadece bir e\u015fle\u015fmenin varl\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in en verimli yoldur.<\/p>\n<pre><code class=\"language-javascript\">const desen = \/\\d{3}\/;\nconsole.log(desen.test(\"abc123def\")); \/\/ \u00c7\u0131kt\u0131: true\nconsole.log(desen.test(\"abcdef\"));   \/\/ \u00c7\u0131kt\u0131: false<\/code><\/pre>\n<h4>2. <code>regexp.exec(string)<\/code><\/h4>\n<p><code>string.match()<\/code> metoduna benzer, ancak <code>g<\/code> bayra\u011f\u0131 ile kullan\u0131ld\u0131\u011f\u0131nda farkl\u0131 davran\u0131r.<br \/>\n*   \u0130lk e\u015fle\u015fmeyi bulan bir dizi d\u00f6nd\u00fcr\u00fcr (yakalay\u0131c\u0131 gruplar dahil). E\u015fle\u015fme yoksa <code>null<\/code> d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>g<\/code> bayra\u011f\u0131 varsa, her \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda bir sonraki e\u015fle\u015fmeyi bulur ve <code>regexp.lastIndex<\/code> \u00f6zelli\u011fini g\u00fcnceller. Bu, bir d\u00f6ng\u00fc i\u00e7inde t\u00fcm e\u015fle\u015fmeler \u00fczerinde yineleme yapmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Kedi ve k\u00f6pek, kedi miyavlar.\";\nconst desen = \/kedi\/g; \/\/ 'g' bayra\u011f\u0131 ile\n\nlet eslesme;\nwhile ((eslesme = desen.exec(metin)) !== null) {\n  console.log(<code>E\u015fle\u015fme: ${eslesme[0]}, Ba\u015flang\u0131\u00e7 \u0130ndeksi: ${eslesme.index}<\/code>);\n  console.log(<code>Sonraki arama indeksi: ${desen.lastIndex}<\/code>);\n}\n\/*\n\u00c7\u0131kt\u0131:\nE\u015fle\u015fme: Kedi, Ba\u015flang\u0131\u00e7 \u0130ndeksi: 0\nSonraki arama indeksi: 4\nE\u015fle\u015fme: kedi, Ba\u015flang\u0131\u00e7 \u0130ndeksi: 13\nSonraki arama indeksi: 17\n*\/<\/code><\/pre>\n<h3>Pratik Uygulamalar ve \u00d6rnekler<\/h3>\n<p>Art\u0131k temel bilgileri edindi\u011fimize g\u00f6re, Regex'i ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi g\u00f6relim.<\/p>\n<h4>1. E-posta Do\u011frulama<\/h4>\n<p>Tamamen kusursuz bir e-posta Regex'i yazmak olduk\u00e7a karma\u015f\u0131kt\u0131r, ancak \u00e7o\u011fu durum i\u00e7in yeterli olacak basit bir tan\u0131m:<\/p>\n<pre><code class=\"language-javascript\">const emailRegex = \/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\/;\n\nconsole.log(emailRegex.test(\"test@example.com\"));     \/\/ true\nconsole.log(emailRegex.test(\"john.doe123@mail.co.uk\")); \/\/ true\nconsole.log(emailRegex.test(\"invalid-email\"));         \/\/ false\nconsole.log(emailRegex.test(\"user@.com\"));             \/\/ false (alan ad\u0131ndan \u00f6nce nokta olamaz)<\/code><\/pre>\n<p>*   <code>^<\/code>: String'in ba\u015flang\u0131c\u0131.<br \/>\n*   <code>[a-zA-Z0-9._%+-]+<\/code>: Kullan\u0131c\u0131 ad\u0131 k\u0131sm\u0131. Harfler, rakamlar, nokta, alt \u00e7izgi, y\u00fczde, art\u0131 veya eksi i\u015faretlerinden bir veya daha fazlas\u0131.<br \/>\n*   <code>@<\/code>: <code>@<\/code> i\u015fareti.<br \/>\n*   <code>[a-zA-Z0-9.-]+<\/code>: Alan ad\u0131 k\u0131sm\u0131. Harfler, rakamlar, nokta veya eksi i\u015faretlerinden bir veya daha fazlas\u0131.<br \/>\n*   <code>\\.<\/code>: Nokta (ka\u00e7\u0131\u015f karakteriyle).<br \/>\n*   <code>[a-zA-Z]{2,}<\/code>: Top level domain (TLD) k\u0131sm\u0131. En az iki harften olu\u015fur.<br \/>\n*   <code>$<\/code>: String'in sonu.<\/p>\n<h4>2. Telefon Numaras\u0131 Do\u011frulama (\u00d6rnek: T\u00fcrkiye)<\/h4>\n<p>T\u00fcrkiye'deki telefon numaralar\u0131 genellikle <code>(XXX) XXX XX XX<\/code> veya <code>XXX XXX XX XX<\/code> format\u0131ndad\u0131r.<\/p>\n<pre><code class=\"language-javascript\">const telefonNoRegex = \/^(?:(?:\\+90|0)?\\s?|\\(0?)?(\\d{3})[)\\s.-]?(\\d{3})[)\\s.-]?(\\d{2})[)\\s.-]?(\\d{2})$\/;\n\nconsole.log(telefonNoRegex.test(\"0532 123 45 67\"));   \/\/ true\nconsole.log(telefonNoRegex.test(\"(532) 123 45 67\")); \/\/ true\nconsole.log(telefonNoRegex.test(\"+90 532 123 45 67\")); \/\/ true\nconsole.log(telefonNoRegex.test(\"532-123-45-67\"));   \/\/ true\nconsole.log(telefonNoRegex.test(\"1234567890\"));      \/\/ false (eksik basamak)<\/code><\/pre>\n<p>Bu Regex, farkl\u0131 formatlardaki T\u00fcrkiye telefon numaralar\u0131n\u0131 yakalamaya \u00e7al\u0131\u015f\u0131r. <code>(?:...)<\/code> yakalay\u0131c\u0131 olmayan gruplar ve <code>?<\/code> iste\u011fe ba\u011fl\u0131 niceleyiciler kullan\u0131larak esneklik sa\u011flanm\u0131\u015ft\u0131r.<\/p>\n<h4>3. URL E\u015fle\u015ftirme ve Bile\u015fenlerini Ay\u0131rma<\/h4>\n<p>Bir URL'den protokol, alan ad\u0131 ve yolu ay\u0131klayal\u0131m.<\/p>\n<pre><code class=\"language-javascript\">const url = \"https:\/\/www.example.com:8080\/path\/to\/page?query=test#hash\";\nconst urlRegex = \/^(https?):\\\/\\\/(www\\.)?([\\w.-]+)(:\\d+)?(\\\/[\\w\/.-]<em>)?(\\?\\S<\/em>)?(#\\S*)?$\/;\n\nconst eslesme = url.match(urlRegex);\n\nif (eslesme) {\n  console.log(\"Protokol:\", eslesme[1]); \/\/ https\n  console.log(\"Subdomain (www.):\", eslesme[2]); \/\/ www.\n  console.log(\"Alan Ad\u0131:\", eslesme[3]); \/\/ example.com\n  console.log(\"Port:\", eslesme[4]); \/\/ :8080\n  console.log(\"Yol:\", eslesme[5]); \/\/ \/path\/to\/page\n  console.log(\"Sorgu Parametreleri:\", eslesme[6]); \/\/ ?query=test\n  console.log(\"Hash:\", eslesme[7]); \/\/ #hash\n}<\/code><\/pre>\n<p>Bu \u00f6rnek, yakalay\u0131c\u0131 gruplar\u0131n karma\u015f\u0131k verileri par\u00e7alamak i\u00e7in ne kadar g\u00fc\u00e7l\u00fc oldu\u011funu g\u00f6sterir.<\/p>\n<h4>4. Tarih Format\u0131 \u00c7\u0131karma ve D\u00f6n\u00fc\u015ft\u00fcrme<\/h4>\n<p><code>GG-AA-YYYY<\/code> format\u0131ndaki bir tarihi <code>YYYY\/AA\/GG<\/code> format\u0131na d\u00f6n\u00fc\u015ft\u00fcrelim.<\/p>\n<pre><code class=\"language-javascript\">const tarihMetin = \"Bug\u00fcn\u00fcn tarihi 25-10-2023 ve yar\u0131n 26-10-2023.\";\nconst tarihDesen = \/(\\d{2})-(\\d{2})-(\\d{4})\/g;\n\nconst yeniTarihMetin = tarihMetin.replace(tarihDesen, \"$3\/$2\/$1\");\nconsole.log(yeniTarihMetin); \/\/ \u00c7\u0131kt\u0131: \"Bug\u00fcn\u00fcn tarihi 2023\/10\/25 ve yar\u0131n 2023\/10\/26.\"<\/code><\/pre>\n<h4>5. \u015eifre G\u00fcc\u00fc Kontrol\u00fc<\/h4>\n<p>Basit bir \u015fifre kontrol\u00fc: En az 8 karakter, en az bir b\u00fcy\u00fck harf, bir k\u00fc\u00e7\u00fck harf ve bir rakam i\u00e7ermeli.<\/p>\n<pre><code class=\"language-javascript\">const password = \"Password123\";\nconst passwordRegex = \/^(?=.<em>[a-z])(?=.<\/em>[A-Z])(?=.*\\d)[a-zA-Z\\d]{8,}$\/;\n\nconsole.log(passwordRegex.test(password));      \/\/ true\nconsole.log(passwordRegex.test(\"password\"));    \/\/ false (b\u00fcy\u00fck harf yok)\nconsole.log(passwordRegex.test(\"PASSWORD123\")); \/\/ false (k\u00fc\u00e7\u00fck harf yok)\nconsole.log(passwordRegex.test(\"Pass1\"));       \/\/ false (8 karakterden az)<\/code><\/pre>\n<p>Burada \u00fc\u00e7 adet pozitif ileriye bak\u0131\u015f (<code>(?=...)<\/code>) kulland\u0131k. Her biri, \u015fifrenin tamam\u0131 e\u015fle\u015fmeden \u00f6nce belirli bir ko\u015fulu kontrol eder. <code>[a-zA-Z\\d]{8,}$<\/code> k\u0131sm\u0131 ise \u015fifrenin en az 8 karakter uzunlu\u011funda olmas\u0131n\u0131 ve sadece harf veya rakam i\u00e7ermesini sa\u011flar.<\/p>\n<h4>6. Metin \u0130\u00e7indeki Belirli Kelimeleri De\u011fi\u015ftirme\/Sans\u00fcrleme<\/h4>\n<p>Bir metindeki k\u00fcf\u00fcrl\u00fc kelimeleri sans\u00fcrleyelim.<\/p>\n<pre><code class=\"language-javascript\">const metin = \"Bu bir k\u00f6t\u00fc kelime ve ba\u015fka bir k\u00f6t\u00fc kelime i\u00e7eriyor.\";\nconst sansurDesen = \/(k\u00f6t\u00fc kelime|ba\u015fka bir k\u00f6t\u00fc kelime)\/gi; \/\/ Sans\u00fcrlenecek kelimeler\n\nconst sansurluMetin = metin.replace(sansurDesen, \"<strong><\/strong><em><\/em>*\");\nconsole.log(sansurluMetin); \/\/ \u00c7\u0131kt\u0131: \"Bu bir <strong><\/strong><strong><em> ve <\/strong><strong><\/strong><\/em> i\u00e7eriyor.\"<\/code><\/pre>\n<h3>\u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>Regex \u00f6\u011frenme ve kullanma s\u00fcrecinizi kolayla\u015ft\u0131racak baz\u0131 ipu\u00e7lar\u0131:<\/p>\n<p>1.  <strong>Ad\u0131m Ad\u0131m Ba\u015flay\u0131n:<\/strong> Karma\u015f\u0131k bir desen olu\u015fturman\u0131z gerekti\u011finde, t\u00fcm\u00fcn\u00fc birden yazmaya \u00e7al\u0131\u015fmay\u0131n. K\u00fc\u00e7\u00fck par\u00e7alar halinde ba\u015flay\u0131n ve her par\u00e7an\u0131n do\u011fru \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olarak yava\u015f yava\u015f eklemeler yap\u0131n.<br \/>\n2.  <strong>Online Ara\u00e7lar Kullan\u0131n:<\/strong> Regex \u00f6\u011frenmek ve hata ay\u0131klamak i\u00e7in harika online ara\u00e7lar vard\u0131r.<br \/>\n    *   [regex101.com](https:\/\/regex101.com\/): Deseninizi yazarken her bir par\u00e7ay\u0131 ayr\u0131 ayr\u0131 a\u00e7\u0131klar, \u00f6rnek metin \u00fczerinde e\u015fle\u015fmeleri an\u0131nda g\u00f6sterir ve farkl\u0131 diller i\u00e7in kod par\u00e7ac\u0131klar\u0131 sunar.<br \/>\n    *   [regexr.com](https:\/\/regexr.com\/): Benzer i\u015flevsellik sunar, ayr\u0131ca yayg\u0131n desenler i\u00e7in bir k\u00fct\u00fcphane i\u00e7erir.<br \/>\n    Bu ara\u00e7lar, Regex'i g\u00f6rsel olarak anlaman\u0131za ve hatalar\u0131 h\u0131zla bulman\u0131za yard\u0131mc\u0131 olur.<br \/>\n3.  <strong>Test Edin, Test Edin, Test Edin:<\/strong> Yazd\u0131\u011f\u0131n\u0131z Regex'i \u00e7e\u015fitli ge\u00e7erli ve ge\u00e7ersiz giri\u015flerle test etti\u011finizden emin olun. Beklenmeyen kenar durumlar\u0131 (edge cases) her zaman ortaya \u00e7\u0131kabilir.<br \/>\n4.  <strong>Performans Konular\u0131:<\/strong> \u00c7ok karma\u015f\u0131k veya a\u015f\u0131r\u0131 genelle\u015ftirilmi\u015f Regex'ler (\u00f6rne\u011fin, <code>.<em><\/code> gibi a\u00e7g\u00f6zl\u00fc niceleyicilerin a\u015f\u0131r\u0131 kullan\u0131m\u0131) \"Regex deneme yan\u0131lma\" (catastrophic backtracking) sorununa yol a\u00e7abilir ve uygulaman\u0131z\u0131 yava\u015flatabilir veya \u00e7\u00f6kertedebilir. M\u00fcmk\u00fcn oldu\u011funca spesifik olun ve tembel niceleyicileri (<code><\/em>?<\/code>, <code>+?<\/code>) ne zaman kullanaca\u011f\u0131n\u0131z\u0131 bilin.<br \/>\n5.  <strong>Okunabilirlik \u0130\u00e7in Yorumlar:<\/strong> JavaScript Regex'lerinin i\u00e7ine do\u011frudan yorum ekleyemeseniz de, kodunuzda Regex'in ne anlama geldi\u011fini a\u00e7\u0131klayan yorumlar b\u0131rak\u0131n. \u00d6zellikle karma\u015f\u0131k desenler i\u00e7in bu, gelecekte sizin veya ba\u015fkalar\u0131n\u0131n kodu anlamas\u0131na yard\u0131mc\u0131 olacakt\u0131r.<br \/>\n6.  <strong>K\u00fct\u00fcphaneler:<\/strong> Bazen \u00e7ok karma\u015f\u0131k Regex g\u00f6revleri i\u00e7in \u00f6zel k\u00fct\u00fcphaneler kullanmak daha iyi bir \u00e7\u00f6z\u00fcm olabilir. Ancak \u00e7o\u011fu zaman, yerle\u015fik JavaScript Regex yetenekleri yeterlidir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>\"JavaScript Regular Expressions for Regular People\" ba\u015fl\u0131kl\u0131 bu makalede, d\u00fczenli ifadelerin temelden ileri seviyeye kadar bir\u00e7ok y\u00f6n\u00fcn\u00fc ele ald\u0131k. Regex'in ilk ba\u015fta karma\u015f\u0131k semboller y\u0131\u011f\u0131n\u0131 gibi g\u00f6r\u00fcnse de, ad\u0131m ad\u0131m \u00f6\u011frenildi\u011finde ve pratik uygulamalarla peki\u015ftirildi\u011finde ne kadar g\u00fc\u00e7l\u00fc ve kullan\u0131\u015fl\u0131 bir ara\u00e7 oldu\u011funu g\u00f6rd\u00fck. Karakter s\u0131n\u0131flar\u0131ndan niceleyicilere, \u00e7apalardan gruplamaya ve JavaScript'in String ve RegExp metotlar\u0131na kadar bir\u00e7ok konuyu \u00f6rneklerle inceledik.<\/p>\n<p>Unutmay\u0131n ki Regex, bir kere \u00f6\u011frenip b\u0131rak\u0131lacak bir konu de\u011fildir; s\u00fcrekli pratik ve deneme gerektirir. Kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131z her yeni metin i\u015fleme probleminde Regex kullanmay\u0131 d\u00fc\u015f\u00fcnmek, bu dili i\u00e7selle\u015ftirmenize yard\u0131mc\u0131 olacakt\u0131r. Online ara\u00e7lar\u0131 aktif olarak kullanarak ve bol bol deneme yaparak, k\u0131sa s\u00fcrede bir Regex ustas\u0131na d\u00f6n\u00fc\u015febilirsiniz. Metinleri arama, do\u011frulama, \u00e7\u0131karma ve de\u011fi\u015ftirme yetenekleriniz programlama becerilerinizi bamba\u015fka bir seviyeye ta\u015f\u0131yacakt\u0131r. Korkmay\u0131n, deneyin ve Regex'in g\u00fcc\u00fcn\u00fc ke\u015ffedin!<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"JavaScript Regular Expressions for Regular People\nGiri\u015f: D\u00fczenli \u0130fadelerle Tan\u0131\u015f\u0131n\n\u0130nternet d\u00fcnyas\u0131nda gezinirken, form doldururken, bir","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[129],"tags":[],"class_list":{"0":"post-37390","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-javascript","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JavaScript Regular Expressions for Regular People - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JavaScript Regular Expressions for Regular People\" \/>\n<meta property=\"og:description\" content=\"JavaScript Regular Expressions for Regular People Giri\u015f: D\u00fczenli \u0130fadelerle Tan\u0131\u015f\u0131n \u0130nternet d\u00fcnyas\u0131nda gezinirken, form doldururken, bir\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-02T15:41:01+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"JavaScript Regular Expressions for Regular People\",\"datePublished\":\"2026-01-02T15:41:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\"},\"wordCount\":2748,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Javascript\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\",\"name\":\"JavaScript Regular Expressions for Regular People - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-02T15:41:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript Regular Expressions for Regular People\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"JavaScript Regular Expressions for Regular People - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/","og_locale":"tr_TR","og_type":"article","og_title":"JavaScript Regular Expressions for Regular People","og_description":"JavaScript Regular Expressions for Regular People Giri\u015f: D\u00fczenli \u0130fadelerle Tan\u0131\u015f\u0131n \u0130nternet d\u00fcnyas\u0131nda gezinirken, form doldururken, bir","og_url":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-02T15:41:01+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"JavaScript Regular Expressions for Regular People","datePublished":"2026-01-02T15:41:01+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/"},"wordCount":2748,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Javascript"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/","url":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/","name":"JavaScript Regular Expressions for Regular People - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-02T15:41:01+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javascript-regular-expressions-for-regular-people\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"JavaScript Regular Expressions for Regular People"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37390"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37390\/revisions"}],"predecessor-version":[{"id":37391,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37390\/revisions\/37391"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}