|
| Makaleler |
| Toplam Makale |
7806 |
| Yayında |
7603 |
| Bekleyenler |
203 |
| Görüntüleme |
25497824 |
|
|
|
|
JavaScript Ve Düzenli İfadeler (Regular Expressions)
Düzenli ifadeler, benzer karakter eşleşmelerini karakter dizileri (string) içinde kullanabilmemizi sağlar. JavaScript'te düzenli ifadeler, nesne olarak da kabul edilmektedir. Düzenli ifade kalıpları, RegExp metodları olan exec ve test ile kullanılabileceği gibi, match, replace, search ve split gibi String metodlarıyla da kullanılabilmektedir. Bu bölümde JavaScript dilindeki düzenli ifadeleri inceleyeceğiz.Bir Düzenli İfade Yaratmak
Düzenli ifade kurmanın(construct) iki yolu vardır. - Örnekteki gibi bir düzenli ifade literali kullanmak :
rE = /ab+c/
Literaller, düzenli ifadenin script icra edilirken derlenmesini sağlar.
- Ya da
RegExp nesnesinin yapıcı(constructor) fonksiyonunu çağırmak :
rE = new RegExp("ab+c")
Yapıcı fonksiyon, düzenli ifadenin çalışma anında derlenmesini sağlar. Yapıcı fonksiyonu, değişecek düzenli ifade kalıbını biliyorsanız, ya da kalıbı bilmiyor olmanıza rağmen başka bir kaynaktan alıyorsanız(örneğin kullanıcı bilgi girişi - input) kullanın.
Bir Düzenli İfade Kalıbı Yazmak
Düzenli ifade kalıpları, hem basit karakterler biraraya getirilerek(örneğin /abc/) hem de basit ve özel karakterler birleştirilerek(örneğin /ab*c/) oluşturulabilir. Basit Kalıpları Kullanmak
Basit kalıplar, istediğiniz karakter(ler)in tam olarak aynılarını bulmanızı sağlayan karakter yapılarıdır. Burada karakterlerin dizilişi ve büyük harf-küçük harf kullanımı önemlidir. Örneğin /ava/ kalıbına göre "ava" karakterleri, "JavaScript öğrenmek çok eğlenceli!" ve "Kavak ağacı yavaşça sallanıyordu rüzgarla" stringlerinin her ikisiyle de eşleşiyorken "Ava çıkan avlanır" stringi bu kalıba uygun değildir. Özel Karakterleri Kullanmak
Benzer karakter(ler)i bulmak için basit kalıpların yeterli olmadığı durumlarda özel karakterlerden yararlanırız. Sözgelimi yanyana kullanılan birden fazla aynı karakter, karakterler arasındaki boşluklar(whitespace) ancak düzenli ifade kalıplarının içine özel karakter eklenerek bulunabilir. Örneğin /alo*/ kalıbı içinde tek bir a'yı takip eden tek bir l ve sıfır ya da daha fazla o bulunan stringlerle eşleşecektir (*, ardına eklendiği karakterden sıfır ya da daha fazla bulunduğu anlamına gelir). "JavaScript ve Java; al birini, vur ötekine!", "Santral, alo, aloooooo!!!" stringleri bu kalıpla eşleşmektedir.
Aşağıdaki tabloda, düzenli ifadeler içinde kullanılabilen tüm özel karakterler açıklamalarıyla birlikte sıralanmıştır. | Özel Karakter | Anlamı | \ | İki kullanım amacı vardır : - Genellikle literal gibi davranan karakterlerin önüne eklenerek karakterin özel olduğunu, literal olarak yorumlanmaması gerektiğini belirtir. Örneğin
/b/ kalıbı, "b" karakteriyle eşleşmektedir. /\b/ kalıbında gösterildiği gibi önüne ters kesme işareti(\) yerleştirilirse özel karakter olarak değerlendirilir. - Genellikle özel karakter gibi davranan karakterlerin önüne eklenerek karakterin özel olmadığını, literal olarak yorumlanması gerektiğini belirtir. Örneğin
/b*/ kalıbı, * özel karakteri kullanıldığı için sıfır ya da daha fazla "b" karakteriyle eşleşmekteyken, /b\*/ şeklindeki bir kalıp sadece "b*" karakterleriyle eşleşmektedir.
| ^ | Girdinin(input) başlangıcıyla eşleşir. Çoklu satır(multiline) bayrağı true(doğru) olarak kurulmuşsa, aynı zamanda satır kesme karakterinin hemen sonrasıyla da eşleşmektedir.
Örneğin /^B/ kalıbı "bir B" stringiyle eşleşmez, "Bir B" stringiyle eşleşir. "bir B\nBu da B" stringi de satır başını(\n) takip eden bir "B" karakteri olduğu için kalıba uygundur.
| $ | Girdinin sonuyla eşleşir. Çoklu satır bayrağı true olarak kurulmuşsa, aynı zamanda satır kesme karakterinin hemen öncesiyle de eşleşmektedir.
Örneğin /a$/ kalıbı "JavaScript" stringiyle eşleşmez, "a" karakteri stringin sonunda olduğu için "Java" ile eşleşir.
| * | Ardına eklendiği karakterden sıfır ya da daha fazlasını içeren girdilerle eşleşmektedir.
Örneğin /a*v/ kalıbı hem "Bir aslan miyaaaaav dedi" stringiyle, hem de "Fareler ve insanlar" stringiyle eşleşir.
| + | Ardına eklendiği karakterden bir ya da daha fazlasını içeren girdilerle eşleşmektedir.
Örneğin /alo+/ kalıbı, "alo" ve "alooooo" stringlerinin ikisiyle de eşleşir.
| ? | Ardına eklendiği karakterle 0 ya da 1 kez eşleşir.
Örneğin /e?le?/ kalıbı, "elleme" stringiyle "el" ve "le" karakterleri aracılığıyla eşleşmektedir.
| . | Onluk nokta, yeni satır karakterinden ayrılan herhangi tek bir karakterle eşleşir.
Örneğin /.n/ kalıbı "ne anneanne?" stringindeki "an" ile eşleşirken "ne" ile eşleşmemektedir.
| (x) | 'x' ile eşleşir ve eşleşmeyi hatırlar. Eşleşme parantez içine alınarak çağrılmaktadır.
Örneğin /(ceviz)/ kalıbı 'ceviz ağacı' stringindeki 'ceviz' ile eşleşerek bu eşleşmenin hatırlanmasını sağlamaktadır. Eşleşilen string, sonuçlandırılmış array(sıralı dizi) nesnesinden tekrar çağrılabilir : [1],...,[n].
| (?:x) | 'x' ile eşleşir ancak eşleşmeyi hatırlamaz. Eşleşme parantez içine alınmadan çağrılmaktadır. Eşleşilen string, sonuçlandırılmış array nesnesinden tekrar çağrılamaz.
| x(?=y) | Sadece 'x' string parçasını takip eden bir 'y' varsa 'x' ile eşleşir.
Örneğin /Ceviz(?=NET)/ kalıbının 'Ceviz' substringiyle(üye string, alt-string) eşleşebilmesi için, bu substringi takip eden 'NET' substringi de bulunmalıdır. /Ceviz(?=NET|COM)/ kalıbında ise eşleşme ancak 'Ceviz' substringini takip eden bir 'NET' ya da 'COM' varsa gerçekleşir.
| x(?!y) | Sadece 'x' string parçasını takip eden bir 'y' yoksa 'x' ile eşleşir.
Örneğin /\d+(?!\.)/ kalıbı desimal(onluk) noktası bulunmayan bir sayıyla eşleşir. Bu ifadede d ve . özel karakter olduğu için önlerine \ getirilmiştir. Kalıp, /\d+(?!\.)/.exec("3.141") şeklinde bir düzenli ifade olarak kullanıldığında geri dönen değer 3.141 yerine 141 olacaktır.
| x|y | 'x' ya da 'y' ile eşleşir.
Örneğin /yeşil|kırmızı/ kalıbı hem 'yeşil ışık' stringindeki 'yeşil' ile, hem 'kırmızı ışık' stringindeki 'kırmızı' ile eşleşebilir.
| {n} | n pozitif tamsayı olmalıdır. Belirtilen karakter ile n kadar eşleşilmesini sağlar.
Örneğin /o{2}/ kalıbı, 'alo' stringindeki 'o' ile eşleşmezken 'aloo' stringindeki her iki 'o' ile de eşleşir. 'alooooo' stringinin ise ilk iki 'o' karakteri ile eşleşmektedir.
| {n,} | n pozitif tamsayı olmalıdır. Belirtilen karakter ile en az n kadar eşleşilmesini sağlar.
Örneğin /o{2,}/ kalıbı, 'aloo' ve 'alooooo' stringlerindeki tüm 'o' karakterleriyle eşleşir.
| {n,m} | n ve m pozitif tamsayı olmalıdır. Belirtilen karakter ile en az n, en çok m kadar eşleşilmesini sağlar.
Örneğin /o{2,4}/ kalıbı 'al' ve 'alo' stringleri ile eşleşmezken 'aloo' stringindeki iki, 'alooooo' stringindeki ilk dört 'o' karakteriyle eşleşir.
| [xyz] | Bir karakter setidir. Ayraç parantezleri içine alınmış karakterlerden herhangi biriyle eşleşir. Kısa çizgi(-) kullanarak sıralı bir karakter aralığı belirtebilirsiniz.
Örneğin [abcd] kalıbı [a-d] kalıbıyla aynıdır ve 'ağaç' stringindeki 'a' ile, 'ceviz' stringindeki 'c' ile eşleşilmesini sağlar.
| [^xyz] | Etkisiz karakter setidir. Ayraç parantezleri içine alınmamış herhangi bir karakterle eşleşir. Kısa çizgi kullanarak sıralı bir karakter aralığı belirtebilirsiniz.
Örneğin [^abcd] kalıbı [^a-d] kalıbıyla aynıdır ve 'ağaç' stringindeki 'ğ' karakteriyle, 'ceviz' stringindeki 'e' karakteriyle eşleşir.
| [\b] | Bir backspace ile eşleşir. (\b ile karıştırmayın.)
| \b | Boşluk ya da yenisatır gibi bir sözcük sınırlandırma karakteriyle eşleşir. ([\b] ile karıştırmayın.)
Örneğin /\bb\w/ kalıbı, 'bu bugün' stringindeki ilk 'bu' ile eşleşirken /\wn\b/ kalıbı, 'bu bugün ne güzel gün' stringindeki ilk 'ün' ile eşleşmektedir. (\w özel karakteri için aşağıya bakın.)
| \B | Sözcük sınırlandırma karakterleriyle eşleşilmemesini sağlar.
Örneğin /\w\Bb/ kalıbı, 'bu bugün' stringiyle eşleşmezken(ilk 'b' yenisatır karakterini, ikincisi boşluk karakterini izliyor) /n\B\w/ kalıbı 'bu bugün ne güzel gün' stringindeki 'ne' ile eşleşmektedir(ilk 'n' yi boşluk karakteri izliyor).
| \cX | X kontrol karakteridir. String içerisindeki kontrol karakteriyle eşleşir.
Örneğin /\cM/, kontrol-M ile eşleşmektedir.
| \d | [0-9] kalıbına eşdeğer olan bu özel karakter, herhangi bir sayısal karakter ile eşleşilmesini sağlar.
Örneğin /\d/ ya da /[0-9]/ kalıbı, 'Terminator 2, serinin en iyi filmiydi.' stringindeki '2' ile eşleşmektedir.
| \D | [^0-9] kalıbına eşdeğer olan bu karakter, sayısal olmayan herhangi bir karakter ile eşleşilmesini sağlar.
Örneğin /\D/ ya da /[^0-9]/ kalıbı, '2x2=5' stringindeki 'x' karakteriyle eşleşmektedir.
| \f | Bir form-besleme karakteriyle eşleşir.
| \n | Bir satır-besleme karakteriyle eşleşir.
| \r | Bir geri dönüş-besleme karakteriyle eşleşir.
| \s | Boşluk(space), tab, form-besleme, satır-besleme karakterleri içindeki tek bir boşluk(beyaz boşluk, white space) ile eşleşir.
| \S | Boşluk(white space) karakterinden farklı olmak üzere tek bir karakter ile eşleşir. [ ^\f\n\r\t\v\u00A0\u2028\u2029] kalıbına eşdeğerdir.
Örneğin /\S\w*/ kalıbı, 'aloo, orada mısın?' stringindeki 'aloo,' ile eşleşir(',' karakterini takip eden bir boşluk olduğu için bu karakterden sonrası dikkate alınmaz).
| \t | Bir tab karakteri ile eşleşir.
| \v | Bir dikey tab karakteriyle eşleşir.
| \w | [A-Za-z0-9_] kalıbına eşit olan bu özel karakter, herhangi bir alfasayısal(alphanumeric) karakter ile eşleşilmesini sağlar.
Örneğin /\w/ kalıbı, 'ceviz' stringindeki 'c' ile, '$ alma, TL al' stringindeki ilk 'a' ile eşleşmektedir.
| \W | [^A-Za-z0-9_] kalıbına eşit olan bu özel karakter, alfasayısal(alphanumeric) olmayan herhangi bir karakter ile eşleşilmesini sağlar.
Örneğin /\W/ kalıbı, 'ceviz' stringi ile eşleşmezken '$ alma, TL al' stringindeki '$' ile eşleşmektedir.
| \n | n pozitif tamsayıdır. Daha önce parantez içine alınan substring ile n kadar eşleşilmesini sağlar.
Örneğin /ceviz(,)\spalamut\1/ kalıbı, 'ceviz, palamut, meşe, kestane' stringindeki 'ceviz, palamut,' ile eşleşmektedir.
| \0 | Bir NUL karakter ile eşleşir. Bu kalıba başka bir sayısal hane eklenemez.
| \xhh | İki haneli hexadecimal(onaltılık) kodu(hh) ile belirtilmiş bir karakter ile eşleşir.
| \uhhhh | Dört haneli hexadecimal(onaltılık) kodu(hhhh) ile belirtilmiş bir karakter ile eşleşir.
| Düzenli İfadeler İle Çalışmak
Düzenli ifadeler, RegExp metodları olan exec ve test ile kullanılabileceği gibi, match, replace, search ve split gibi String metodlarıyla da kullanılabilmektedir. Aşağıdaki tabloda bu metodlar kısa kısa açıklanmıştır.| Metod | Açıklaması | exec | String içinde bir eşleşmeyi arayan RegExp metodudur. Sıralı bir bilgi dizisi geri döndürür.
| test | String içinde bir eşleşmeyi denetleyen RegExp metodudur. Mantıksal bir değer(true ya da false) geri döndürür.
| match | String içinde bir eşleşmeyi arayan String metodudur. Sıralı bir bilgi dizisi ya da eşleşme sağlanamazsa null değer geri döndürür.
| search | String içinde bir eşleşmeyi denetleyen String metodudur. Arama işlemi başarılıysa eşleşmenin indeksini, başarılı değilse -1 değerini geri döndürür.
| replace | String içinde bir eşleşmeyi arayan ve eşleşilen substringi başka bir substringle değiştiren String metodudur.
| split | String içindeki belirli karakterleri ayırmak için kullanılan String metodudur.
|
Bir kalıbın string içerisinde bulunup bulunmadığını öğrenmek için test ya da search metodunu kullanın; daha fazla bilgi için exec ya da match metodunu kullanabilirsiniz, ancak bu metodlar nispeten daha yavaş çalışmaktadır. exec ya da match metodunu kullanmışsanız ve eşleşme başarılıysa, öntanımlı düzenli ifade nesnesi(RegExp) de geri dönen değerler arasındadır.
Aşağıdaki örnek scriptte, exec metodu kullanılarak string içinde bir eşleşme aranmaktadır.
<script language="JavaScript1.2">
<!--
rExp = /d(b+)d/g;
dizi = rExp.exec("cdbbdbsbz");
-->
</script>
Düzenli ifadenin özelliklerine ihtiyaç duymuyorsanız dizi yaratmanın başka bir yolu daha var :
<script language="JavaScript1.2">
<!--
dizi = /d(b+)d/g.exec("cdbbdbsbz");
-->
</script>
Düzenli ifadeyi, yapıcı fonksiyonla bir stringden kurmak için aşağıdaki seçeneği kullanabilirsiniz.
<script language="JavaScript1.2">
<!--
rExp = new RegExp("d(b+)d", "g");
dizi = rExp.exec("cdbbdbsbz");
-->
</script>
Bu scriptleri kullandığınızda geri dönen dizi değeri ve güncellenen özellikler aşağıdaki tabloda gösterilmiştir. | Nesne | Özellik ya da indeks | Açıklama | Bu örnekte | dizi | | Eşleşilen string ve hatırlanan tüm substringler. | ["dbbd", "bb"] | | | | | index | Girilen string içindeki eşleşmenin 0 tabanlı indeksi. | 1 | | | | | input | Girilen orijinal string. | "cdbbdbsbz" | | | | | [0] | En son eşleşilen karakterler. | "dbbd" | | | rExp | lastIndex | Bir sonraki eşleşmenin başladığı indeks. (Bu özellik sadece g opsiyonu tercih edilmişse kullanılabilir; bu opsiyonla ilgili açıklamaları aşağıda bulabilirsiniz.) | 5 | | | | | source | Kalıp metni. Düzenli ifade yaratıldığı zaman güncellenir, çalıştırıldığında değil... | "d(b+)d" |
Scriptin ikinci halinde, bir düzenli ifadeyi değişkene atamadan, nesne başlatıcıyla(object initializer) nasıl yaratabileceğinizi gördünüz. Bu seçenek tercih edildiğinde, her olay yeni bir düzenli ifade olarak kabul edilmektedir. Bu nedenle, daha sonra düzenli ifadenin özelliklerine erişemezsiniz. Örneğin aşağıdaki gibi bir scriptimiz olduğunu düşünelim : <script language="JavaScript1.2">
<!--
rExp = /d(b+)d/g;
dizi = rExp.exec("cdbbdbsbz");
document.writeln("rExp için lastIndex değeri : " + rExp.lastIndex);
-->
</script>
Script çalıştırıldığında görüntülenen metin :
rExp için lastIndex değeri : 5
Scripti değişken kullanmadan düzenlediğimizde; <script language="JavaScript1.2">
<!--
dizi = /d(b+)d/g.exec("cdbbdbsbz");
document.writeln("lastIndex değeri : " + /d(b+)d/g.lastIndex);
-->
</script>
Görüntülenen metin :
lastIndex değeri : 0
İki ifade içindeki /d(b+)d/g olayları, farklı düzenli ifade nesneleridir; bu nedenle lastIndex özellikleri de farklı değerlere sahiptir. Nesne başlatıcıyla yaratılmış bir düzenli ifadenin özelliklerine ihtiyaç duyacaksanız, ilk olarak ifadeyi bir değişkene aktarmayı unutmayın. Parantez İçine Alınan Substring Eşleşmelerini Kullanmak
Parantezler, içine yazılan üye eşleşmelerin(alt-eşleşme, eşleşmenin bir kısmı) daha sonra tekrar kullanılabilmesi için hafızaya kaydedilmesini sağlar. Örneğin /a(b)c/ kalıbı 'abc' ile eşleşip, 'b' karakterini anımsamaktadır. Parantez içine alınan üye eşleşmeleri yeniden çağırmak için Array nesnesi kullanılır. ([1],...,[n] --> n, hafızaya kaydedilen toplam üye eşleşme sayısıdır; indeks belirtilerek ilgili eşleşmeye ulaşılabilir)
Aşağıdaki örnekleri inceleyerek parantez içine alınan üye eşleşmelerin nasıl kullanıldığını daha iyi anlayabilirsiniz :
1. Örnek : Bu scriptte, replace metodu kullanılarak string içindeki sözcüklerin yeri değiştirilmektedir. Script değiştirilecek metinleri belirtmek için $1 ve $2 anahtarlarını kullanır. $1 anahtarı ilk stringi, $2 anahtarı parantez içine alınmış ikinci üye eşleşmeyi belirtmekte...
<script language="JavaScript1.2">
<!--
rExp = /(\w+)\s(\w+)/;
str = "Şahin Gür";
yeniStr = str.replace(rExp, "$2, $1");
document.write(yeniStr);
-->
</script>
Script çalıştırıldığında ekrana "Gür, Şahin" yazar.
2. Örnek : Bu örneğimizdeki düzenli ifade, input nesnesinin Change olayıyla kurulmaktadır; bilgiAl fonksiyonunda, exec metodu () kısayol işareti aracılığıyla çağrılır ve fonksiyona gönderilen değer(RegExp.input değeri) argüman olarak kabul edilir.
<html>
<script language="JavaScript1.2">
<!--
function bilgiAl(){
rExp = /(\w+)\s(\d+)/();
// () kullanılarak input değeri kalıp haline getirildi
window.alert(rExp[1] + ", yaşınız : " + rExp[2]);
}
-->
</script>
Adınızı ve yaşınızı yazdıktan sonra ENTER tuşuna basın...
<form>
<input type="text" name="AdVeYas" onChange="bilgiAl(this);">
</form>
</html>
Ayrıntılı Arama Seçeneklerinden Yararlanmak
Düzenli ifadeler, tekrarlı, küçük harf-büyük harf duyarsız ve çoklu-satır aramalarda kullanılmak üzere üç seçimlik bayrağa sahiptir; tekrarlı aramayı belirtmek için g bayrağı, harf duyarsız aramayı belirtmek için i bayrağı kullanılır. Çoklu-satır(multi-line) arama içinse m bayrağı kullanılmaktadır. Bu bayraklar ayrı ayrı kullanılabilecekleri gibi, birlikte, herhangi bir sırada da kullanılabilirler.
Bir düzenli ifadeye bayrak eklemek için aşağıdaki sözdizimlerinden yararlanın :
rExp = /kalıp/bayrak rExp = new RegExp("kalıp", ["bayrak"])
Bayraklar düzenli ifadelerin tamamlayıcı kısımlarıdır; sonradan eklenemez ya da çıkartılamazlar.
Örneğin rExp = /\w+\s/g kalıbı, boşluk karakterinin takip ettiği bir ya da daha fazla karakteri göstermekte, bu eşleşme için string baştan sona gözden geçirilmektedir.
<script language="JavaScript1.2">
<!--
rExp = /\w+\s/g;
str = "do re mi fa sol la si do";
dizi = str.match(rExp);
document.write(dizi);
-->
</script>
Script çalıştırıldığında "do","re","mi","fa","sol","la","si" metni görüntülenir.
Aynı sonucu almak için
rExp = /\w+\s/g;
satırı yerine
rExp = new RegExp("\\w+\\s", "g"); yazılabilirdi.
Örnek Uygulama : Telefon Numarası Doğru Yazılmış Mı?
Bu örnekte, kullanıcıdan bir telefon numarası girerek ENTER tuşuna basması istenmektedir. Kullanıcı bu işlemi yerine getirdiğinde script girilen numarayı kontrol eder, numara geçerliyse(düzenli ifadede belirtilen karakter dizilimiyle eşleşiyorsa) kullanıcıya bir teşekkür penceresi gösterilir ve telefon numarası onaylatılır; numara geçersizse, kullanıcıya hatalı bir telefon numarası girdiğini belirten bir pencere gösterilir.
Düzenli ifade kalıbı tek haneli bir sayıyı (d{1}) takip eden açma parantezi(\(), üç haneli bir sayı(d{3}), kapama parantezi(\)), kısa çizgi, onluk nokta ya da boşluk karakterlerinden herhangi biri bulunduğunda hafızaya kaydedilen bir karakter(([-\.\s])), üç haneli bir sayı(d{3}), indeks belirtilerek hafızadan çağrılan bir karakter(\1), iki haneli bir sayı(d{2}), indeks belirtilerek hafızadan çağrılan bir karakter(\1) ve iki haneli bir sayıdan(d{2}) oluşmaktadır.
ENTER tuşuna basıldığında Change olayı aktif olur ve kullanıcının girdiği veri, RegExp.input değeri olarak belirlenir. <html>
<script language="JavaScript1.2">
<!--
rExp = /d{1}\(\d{3}\)([-\.\s])\d{3}\1\d{2}\1\d{2}/;
function telefonOnayla(){
telNo = rExp.exec();
if(!telNo)
window.alert (RegExp.input +
" doğru bir telefon numarası değildir!");
else
window.alert ("Teşekkür ederiz, \
girdiğiniz telefon numarası : " + telNo[0]);
}
-->
</script>
Telefon numaranızı girdikten sonra ENTER tuşuna basın<br>
(ör, 0(322).435.72.70 ya da 0(322) 435 72 70 gibi)
<form>
<input type="text" name="telefon"
onChange="telefonOnayla(this);">
</form>
</html>
Böylece düzenli ifadeler ile ilgili yazımızın da sonuna gelmiş olduk; düzenli ifadeler, özellikle de düzenli ifadelerde kullanılan özel karakterler, karışık sözdizimlerine alışık değilseniz anlaşılması güç konulardır. Bu noktada, yazıyı anlayana kadar belirli aralıklarla tekrar tekrar okumanızı ve bolca örnek kod incelemenizi öneririm... Hatta kendiniz de özel karakterleri kullanan scriptler yazmayı deneyebilirsiniz.
Not : JavaScript dizisinin yayınlanmış konularına bu bağlantı ile ulaşmanız olası... Erwin C. York
Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.
Eklenme tarihi: 7-9-2006
|

| Bu Makaleye Verilen Puan: |
|
Kullanıcı Yorumları
Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
İlgili Dökümanlar
|
|
|