Konuyu görüntüle
IUCODERS FORUM > Programlama > .NET > Regular Expression
Yazar
mervenur


avatar
İstanbul
Kayıt: 06.01.2011
18.07.2012-15:58 #78110
selam arkadaşlar,

/^[0-9_]+$/

sadece rakam ve , girilmesini istiyorum. bu regular expression harfleri de kabul ediyor. nerede yanlış yaptım :(

kolay gelsin, iyi çalışmalar.





Sevgiyle

Yazar
mstf


avatar
istanbul
Kayıt: 06.01.2012
18.07.2012-16:39 #78115
sadece rakam ve virgül girilsin istiyorsan

^[0-9,]+$












Yazar
mervenur


avatar
İstanbul
Kayıt: 06.01.2011
18.07.2012-17:13 #78116
, yerine _ yazmışım yanlışlıkla.
yalnız sizin verdiğiniz de işe yaramadı. rakam ve diğer özel karakterler de girilebiliyor bu şekilde. :(





Sevgiyle

Yazar
whispered


avatar
Samsun
Kayıt: 24.10.2011
18.07.2012-17:30 #78117
Cevap olarak verilen regex doğru çalışıyor gibi hangi durumlarda çalışmıyor örnek verebilirmisiniz deneyeyim.





Istanbul Universitesi
Bilgisayar Mühendisligi





Yazar
euphrates


avatar
Istanbul
Kayıt: 11.10.2008
18.07.2012-20:24 #78118
Sanırım arkadaş rakam dışı hiçbir şey girilmesin derken klavyede basılsa bile değer girilmemesinden bahsediyor. Regx ile yaparsan post back olduktan sonra valid olup olmadığını kontrol eder.
Keypress'te çalışacak bir javascript işini görebilir.

Kolay gelsingood luck



//Burada sen istediğin text box'ı koyabilirsin. Jquery ile type olarak seçtirilmiş.
//İstersen direk id verip de yapabilirsin. 
<input type='text' />

   $('input').keypress(function(e) {
        var a = [];
        var k = e.which;
        
 //Virgülün ascii'sini unutmuşum. Onu da eklersen olur.
        a.push(44);
        for (i = 48; i < 58; i++)
            a.push(i);
    
        if (!($.inArray(k,a)>=0))
            e.preventDefault();
    });​







Yesterday is history, tomorrow is a mystery. Today? Today is a gift. That’s why we call it the present!



Yazar
mervenur


avatar
İstanbul
Kayıt: 06.01.2011
19.07.2012-13:38 #78123
arkadaşlar wpf kullanıyorum. a'dan z'ye tüm karakterleri kabul ediyor. özel karakterleri de. yani kabul etmediği bir şey yok.

                    Regex regex = new Regex(StRegex);
                    if (e.Key.ToString().ToUpper() == "D")
                    {
                        e.Handled = true;
                    }//if
                    else
                    {
                        e.Handled = regex.IsMatch(e.Key.ToString().Replace("D", ""));
                    }//else

bu arada e.Key.ToString().Replace("D", "") yapmamın sebebi her ne yazmış olursam olayım başına kendiliğinden D koyması.





Sevgiyle

Yazar
fenerista


avatar
Istanbul
Kayıt: 27.11.2006
23.07.2012-21:45 #78146
^(\d|,)+$





Oktay,
Thk you!





Yazar
mervenur


avatar
İstanbul
Kayıt: 06.01.2011
02.08.2012-14:31 #78216
bu da olmadı. windows prensentation foundation (WPF) kullanıyorum acaba onn garipliği midir nedir?





Sevgiyle

Yazar
dotnetonur


avatar
Dersaadet
Kayıt: 21.11.2007
02.08.2012-22:06 #78220
http://www.ultrapico.com/Expresso.htm isimli tool ile RegEx bilgini hem taze tutabilir hem de deneme / yanılmaları ile doğru pattern'a daha hızlıca ulaşabilirsin.

Regex ayrı bir yabancı dil gibi gelir bana hep :)





Ortam sanal olsa da, islenen suc gercektir...

Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
06.08.2012-02:14 #78256
mervenur yazdi
 
bu da olmadı. windows prensentation foundation (WPF) kullanıyorum acaba onn garipliği midir nedir?


Regex standart bir betimdir. C#, JS ya da C++ olması önemli değildir.
Sorununuz hala devam ediyorsa ilgili kısmı (yukardaki koddan biraz daha fazlası) verirseniz daha somut cevap verebiliriz.





Yazar
cguzel


avatar

Kayıt: 11.02.2010
18.09.2012-16:13 #78465
Arkadaşlar şöyle bir regular expression yazdım.

^193.255.167.60$

bu bana doğru sonucu veriyor. anlaşılacağı üzere 193.255.167.60 anlamına geliyor. benim burada yapmak istediğim bunun değilini almak. bu konuda yardımcı olursanız sevinirim. normalde değil şu şekilde [^abc] ama burada sadece içerideki karakterlerin değili kabul ediliyor. benim örneğimi karakter karakter olarak değilde bir bütün olarak düşünmek lazım.





Yazar
cguzel


avatar

Kayıt: 11.02.2010
19.09.2012-11:10 #78468
Arkadaşlar uzun uğraşlar sonucu çözümü buldum. idea

^((?!\AKELİME\z).)*$

burada KELİME olmayanları getiriyor.
\A ve \z kısımlarına dikkat çekmek isterim.

Eğer bu ikisi olmadan şöyle yazmış olsaydık: ^((?!KELİME).)*$ benzer bir sonuç alacaktık.
Fark nedir peki:

2. durumda bize K, KE ,KEL, KELİ , KELİM olan sonuçları getirecekti, ama KELİME KELİMEx KELİMExxx şeklinde olanları getirmayacakti. Burada KELIME olmayanlar ın tümünü yani KELIMExxx olanıda getirmesini istediğimiz için 1. şekilde yazıyoruz. Kısaca \A ve \z arasına yazılanı tek bir string gibi düşünebiliriz. 2. durumda KEL sonucunuda kabul etmesinin sebebi KELIMENIN içerisinde KEL'in geçiyor olmasıdır. KELIMExxx ise KELIME içerisinde olmadığı için kabul etmiyordu. ama 1. durumda biz bunu çözmüş oluyoruz.


! karakteri ise bize NOT işlemi sağşıyor. Yani KELIME olmayanlar anlamında. * ise KELIME den sonra başka karakterlerde olabilir anlamı katıyor.
^ ve $ karakteri başlangıç ve sonu belirtiyor. bunlar kullanılmasada sonuc değişmez. ama bazı durumlarda ihtiyaç duyuluyor.

Ben burada 193.255.167.60 olmayanları getirmesini istiyorum. o zman şu şekilde yazıyorum. ^((?!\A193\.255\.167\.60\z).)*$





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb