2009-07-06 10 views
5

मैं स्ट्रिंग को केवल संख्याओं को सत्यापित करना चाहता हूं। आसान सत्यापन? मैंने ValidationExpression = "/ d +" के साथ RegularExpressionValidator जोड़ा।RegularExpressionValidator व्हाइट-स्पेस एंट्री पर गोलीबारी नहीं कर रहा है

ठीक दिखता है - लेकिन केवल स्थान दर्ज होने पर कुछ भी मान्य नहीं है! यहां तक ​​कि कई रिक्त स्थान भी ठीक हैं। मुझे अनिवार्य होने की आवश्यकता नहीं है।

मैं सर्वर पर ट्रिम कर सकता हूं, लेकिन नियमित अभिव्यक्ति सब कुछ नहीं कर सकता!

उत्तर

11

यह डिज़ाइन द्वारा है और कई लोगों को फेंकने लगता है। RegularExpressionValidator एक फ़ील्ड अनिवार्य नहीं बनाता है और इसे रिक्त होने और सफेद जगहों को स्वीकार करने की अनुमति देता है। \ D + प्रारूप सही है। यहां तक ​​कि^\ d + $ का उपयोग करने से व्हाइटस्पेस को अनुमति देने की एक ही समस्या होगी। व्हाइटस्पेस को अस्वीकार करने के लिए इसे मजबूर करने का एकमात्र तरीका एक ही नियंत्रण पर काम करने के लिए एक आवश्यक फ़ील्ड वैलिडेटेटर भी शामिल करना है।

सत्यापन सफल होता है इनपुट नियंत्रण खाली है:

यह RegularExpressionValidator documentation, जिसमें कहा गया है प्रति है। यदि संबंधित इनपुट नियंत्रण के लिए आवश्यक मान है, तो RegularExpressionValidator नियंत्रण के अतिरिक्त एक आवश्यक फ़ील्ड वैलिडेटर नियंत्रण का उपयोग करें।

कोड-बैक में फ़ील्ड की एक नियमित अभिव्यक्ति जांच अपेक्षा के अनुसार काम करेगी; यह RegularExpressionValidator के साथ केवल एक मुद्दा है। तो आप इसके बजाय एक कस्टम वैलिडेटर का उपयोग कर सकते हैं और args.IsValid = Regex.IsMatch(txtInput.Text, @"^\d+$") कह सकते हैं और यदि इसमें व्हाइटस्पेस है तो यह झूठी वापसी होगी। लेकिन अगर ऐसा है तो क्यों न केवल दस्तावेज प्रति आवश्यक फ़ील्ड वैलिडेटेटर का उपयोग करें और कस्टम कोड लिखने से बचें? इसके अलावा एक कस्टम वैलिडेटर का मतलब अनिवार्य पोस्टबैक है (जब तक आप समकक्ष जावास्क्रिप्ट रेगेक्स के साथ क्लाइंट सत्यापन स्क्रिप्ट निर्दिष्ट नहीं करते)।

+1

सभी सफेद जगहों को खाली माना जाता है? ऐसा लगता है कि सर्वर पर ट्रिम उत्तर है। –

+0

हां, इसे खाली छोड़कर या व्हाइटस्पेस जोड़ना वही है। एक बार जब एक चरित्र दर्ज किया गया है तो सत्यापनकर्ता ट्रिगर करेगा, इसलिए "10" दर्ज करना मान्य है। आप इसे वैसे ही रख सकते हैं, यह जानकर कि जो भी इसे बनाता है वह मान्य संख्या या सफेद जगह होगी। किसी भी मामले में अपने मूल्य को ट्रिम करें। –

+1

अहमद धन्यवाद। मेरी इच्छा है कि एमएसडीएन दस्तावेज़ कहेंगे "सभी सफेद जगह खाली है"! –

1

अजाक्स FilteredTextbox इस्तेमाल करने की कोशिश, इस अंतरिक्ष अनुमति नहीं दी जाएगी ....... http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/FilteredTextBox/FilteredTextBox.aspx

+0

RegularExpressionValidator इस के लिए क्यों काम नहीं करता है? –

+0

यह डिज़ाइन द्वारा है, यदि आप स्थान को अस्वीकार करना चाहते हैं, तो AJAX FilteredTextbox सबसे अच्छा विकल्प है ...... –

1

आपका प्रश्न पालन करने के लिए एक छोटे से कठिन है, लेकिन आप कैसे एक नियमित expresion लिखने के लिए पूछ रहे हैं कि जो केवल अंकों को स्वीकार करता है मुझे लगता है कि आपकी गलती बैकस्लैश के बजाय आगे-स्लैश का उपयोग करने में है। प्रयास करें

"\d+"

+0

हाँ, मैंने कोशिश की है। मुझे समझाने की कोशिश करो। टेक्स्ट बॉक्स में प्रवेश: "55" - मान्य। "55x" - विफल रहता है (यह अच्छा है)। "" - वैध! (इतना अच्छा नहीं!) –

+0

ठीक है, आपके उदाहरण में आपने कहा था कि आपने "/ d +" का उपयोग किया है जो कि "\ d +" regex में बहुत अलग है। क्या आपने RequiredFieldValidator को भी जोड़ने का प्रयास किया है? यह कानूनी रूप से "" को रोक सकता है। 100% सकारात्मक नहीं, मैं एएसपीनेट विशेषज्ञ होने का दावा नहीं करता;) – Scanningcrew

0

का उपयोग कर^\ d + $ पूरी पंक्ति को भरने के लिए अंक के लिए मजबूर करने की कोशिश करो। ^ = लाइन शुरू करें $ = लाइन अंत

+0

आईआईआरसी,^और $ रेगेक्स सत्यापनकर्ता का उपयोग करते समय निहित हैं। – Cerebrus

+0

मैंने खुद को "ग्रहण" किया, लेकिन अतीत में अप्रत्याशित मैचों से काटा गया। ओह, रुको, वह वास शुद्ध RegEx। वैधकर्ता के बारे में निश्चित नहीं है। –

1

रेगुलरएक्सप्रेसियन वैलिडेटर रेगेक्स चेक करने के लिए एक अच्छा रैपर है लेकिन यह खाली नियंत्रण के खिलाफ मान्य नहीं होगा। आप कस्टम वैलिडेटर का उपयोग कर सकते हैं और फिर एक जावास्क्रिप्ट फ़ंक्शन में नियमित अभिव्यक्ति जांच कर सकते हैं जिसे आप सत्यापनकर्ता से जोड़ते हैं।

यह तब तक खाली (रिक्त) नियंत्रण के विरुद्ध मान्य होगा जब तक आप ValidateEmptyText संपत्ति को सत्य पर सेट करते हैं।

आप एमएसडीएन here पर कस्टम वैलिडेटर के बारे में अधिक पढ़ सकते हैं।

+0

इसमें जोड़ने के लिए, जबकि क्लाइंटसाइड स्क्रिप्ट का उपयोग कस्टम वैलिडेटर के साथ किया जा सकता है, लेकिन सभी आधारों को कवर करने के लिए सर्वर साइड सत्यापन भी शामिल करना बुद्धिमान होगा। –

संबंधित मुद्दे

 संबंधित मुद्दे