2009-07-06 26 views
5

Sadece sayı içeren dizeyi doğrulamak istiyorum. Kolay doğrulama? ValidationExpression = "/ d +" ile RegularExpressionValidator ekledim.RegularExpressionValidator beyaz boşluk girişinde ateş etmiyor

Tamam görünüyor - ama yalnızca boşluk girildiğinde hiçbir şey doğrulanmadı! Birçok alan bile onaylandı. Zorunlu olmak için buna ihtiyacım yok.

Sunucuda kırpabilirim, ancak normal ifadeler her şeyi yapamaz!

cevap

11

Bu tasarım gereğidir ve birçok kişiyi atma eğilimindedir. RegularExpressionValidator bir alanı zorunlu hale getirmez ve boş bırakılmasını ve beyaz boşlukları kabul etmesini sağlar. \ D + biçimi doğru.^\ D + $ kullanarak bile, boşluklara izin veren aynı sorunla sonuçlanır. Bunu, boşluklara izin vermemek için zorlamanın tek yolu aynı kontrolde çalışmak için bir RequiredFieldValidator içermesidir. giriş kontrol boşsa

Doğrulama başarılı:

Bu

bildiren RegularExpressionValidator documentation, her biri içindir. İlgili giriş denetimi için değeri gerekiyorsa, RegularExpressionValidator denetimine ek olarak bir RequiredFieldValidator denetimini kullanın.

Kod arkasındaki alanın düzenli bir şekilde ifade edilmesi beklendiği gibi çalışır; Bu sadece RegularExpressionValidator ile ilgili bir sorundur. Bu yüzden bir CustomValidator kullanmak ve args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$") diyeceksiniz ve eğer boşluk içeriyorsa, yanlış döndürecektir. Ancak bu durumda, sadece RequiredFieldValidator'u dokümantasyona göre kullanmak ve özel kod yazmamaktan kaçının mı? Ayrıca bir CustomValidator zorunlu bir geri gönderme anlamına gelir (eşdeğer javascript regex ile bir istemci doğrulama komut dosyası belirtmediğiniz sürece).

+1

Tüm boşluklar boş olarak değerlendiriliyor mu? Sunucuda trim gibi görünüyor cevabı. –

+0

Evet, boş bırakmak veya boşluk eklemek aynı şeydir. Bir karakter girildikten sonra doğrulayıcı tetiklenir, böylece "10" girilmesi geçerli olur. Onu her ne yaparsa geçerli bir sayı veya boşluk olacağını bildiğiniz gibi tutabilirsiniz. Her iki durumda da değerinizi kırpın. –

+1

, teşekkürler Ahmad. Ihtiyar MSDN belgeleri "tüm boşluk boş" diyecekti! –

1

Sorunuz takip etmek biraz zor ....... uzay izin vermez Ajax FilteredTextbox kullanmayı deneyin ancak bir normal ifadeyi yazma soruyorsunuz eğer ki sadece rakamları kabul ediyorum Hatalarınızın ters eğik çizgi yerine ileriye eğik çizgiyi kullanmak olduğunu düşünüyorum.

"\d+"

+0

evet, denedim. açıklamama izin ver. metin kutusuna giriliyor: "55" - geçerli. "55x" - başarısız (bu iyi). "" - geçerli! (çok iyi değil!) –

+0

Tamam, örneğinizde "/ d +" ifadesini kullandığını ve ardından "\ d +" ifadesinin normal ifadede olduğunu söylediniz. RequiredFieldValidator'ı da eklemeyi denediniz mi? Bu, "" yasal olarak önlenebilir. % 100 olumlu değil, bir asp.net uzmanı olduğunu iddia etmiyorum;) – Scanningcrew

0

tüm çizgi doldurmak için basamak zorlamak için^\ d + $ kullanmayı deneyin deneyin. ^ = satır başlangıcı $ = satır sonu

+0

IIRC, bir Regex doğrulayıcı kullanırken^ve $ örtük. – Cerebrus

+0

Ben kendimi "kabul", ama geçmişte beklenmedik maçlar tarafından ısırıldı. Oh, bekle, bu saf RegEx. Doğrulayıcı hakkında emin değilim. –

1

RegularExpressionValidator düzenli ifadeler yapmak için güzel bir sarıcıdır, ancak boş bir denetime karşı geçerli olmaz. Bir ÖzelValidator kullanabilir ve ardından doğrulayıcı denetimi, doğrulayıcıya eklediğiniz bir javascript işlevinde yapabilirsiniz.

ValidateEmptyText özelliğini true olarak ayarladığınız sürece boş (boş) bir kontrolüne karşı geçerli olacaktır.

MSDN here'daki CustomValidators hakkında daha fazla bilgi edinebilirsiniz.

+0

Buna ek olarak, bir clientide komut dosyası bir CustomValidator ile kullanılabilirken, tüm üsleri kapsayacak şekilde sunucu tarafı doğrulamasını da dahil etmek akıllıca olacaktır. –

İlgili konular