2009-02-19 18 views
5

का उपयोग कर मैं एक HtmlTextArea है और मैं उन 500बहु लाइन पाठ इनपुट मान्य कर रहा है जब नेट

वर्तमान में मैं एक RegularExpressionValidator का उपयोग किया है के लिए इनपुट कर सकते हैं वर्णों की संख्या सीमित करना चाहते हैं ...

RegularExpressiondValidator val = new RegularExpressiondValidator(); 
val.ValidationExpression = "^.{0,500}$"; 
val.ControlToValidate = id; 
val.ErrorMessage = "blah"; 

... यह ठीक है जब पाठ एक पंक्ति पर दर्ज किया जाता है लेकिन पाठ में एक नया लाइन वर्ण (यानी बहु-पंक्ति) शामिल होने पर यह तत्काल सत्यापन विफल हो जाता है।

मुझे एहसास है कि विभिन्न नियमित अभिव्यक्ति इंजन हैं और मुझे .NET एक के साथ परीक्षण करने की आवश्यकता है (क्या कोई मुझे ऑनलाइन एक अच्छी दिशा में इंगित कर सकता है?) लेकिन मैंने कुछ अन्य चीजों की कोशिश की है जिसमें " (? एम) "मेरी अभिव्यक्ति स्ट्रिंग में, और^और $ को \ A और \ Z के साथ बदल रहा है लेकिन अभी तक कोई भाग्य नहीं है।

एक और संबंधित प्रश्न, क्या मैं नियमित अभिव्यक्ति का उपयोग करने से बच सकता हूं और इस सत्यापनकर्ता को किसी भी तरह से अपने सत्यापन समारोह से लिंक कर सकता हूं?

उत्तर

6

"।" नई लाइनें शामिल नहीं है।

^((|। \ N) {} 0,500) $

This page भी मदद कर सकता है, इसकी एक regex की नकल पुस्तिकाओं।

+1

आप कोष्ठक के बजाय कोष्ठक का उपयोग करने की जरूरत है। ब्रैकेट इंगित करते हैं या आपने जोड़ा उनके साथ भी। – JaredPar

+0

हाँ, मैंने महसूस किया कि मैंने इसे तब किया है जब मैंने महसूस किया था कि मैंने ऐसा किया था। – ccook

+0

मैंने इसके बारे में कुछ और सोचा और मुझे विश्वास है कि यह अभी भी काम करेगा। द उस मामले में सिर्फ अनावश्यक था। मैं 100% याद नहीं कर सकता हालांकि यद्यपि \ n में [2] को 2 वर्ण या न्यूलाइन से बचने के रूप में माना जाता है। – JaredPar

6

निम्नलिखित

"^(.|\n){0,500}$"; 

करने के लिए अपने regex बदलें। चरित्र एक नई लाइन को छोड़कर सब कुछ मेल खाता है। या खंड आपकी समस्या को ठीक करेगा।

1

यदि आप जावास्क्रिप्ट को जानते हैं और क्लाइंट साइड कैरेक्टर लम्बाई को प्रतिबंधित करना चाहते हैं तो आप इसे दो तरीकों से करेंगे, आप इसे jQuery (एक लोकप्रिय जावास्क्रिप्ट एक्सटेंशन लाइब्रेरी) के साथ कर सकते हैं।

$(document).ready(function(){ 
    var $TextBox = $("#<%=TextBox.ClientID %>"); 

    $TextBox.keyup(function(){ 
    return $TextBox.length <= <%=TextBox.MaxLength %>; 
    }); 
}); 

फिर कस्टम वैलिडेटर के साथ या अपने बटन क्लिक विधि में एक समान चेक सर्वर-साइड करें।

जावास्क्रिप्ट के साथ एएसपी.Net वैलिडेटर्स को सक्षम और अक्षम करने के तरीके भी हैं ताकि आप इसे भी देख सकें।

+0

दिलचस्प है, लेकिन आप नियंत्रण की 'पूर्णता' खोना नहीं चाहते हैं? यही है, प्रमाणीकरण का आधा सर्वर पक्ष सत्यापनकर्ता में है, जबकि दूसरा आधा पृष्ठ में है? – ccook

+0

आप समाधान हैं सबसे स्पष्ट रूप से सबसे सुरुचिपूर्ण है। मैंने सोचा कि मैं एक विकल्प फेंक दूंगा। मेरे पास कुछ चीजों के लिए एएसपी.Net Validators है। – hunter

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