2012-06-29 16 views
5

मैं TextBox इनपुट लंबाई को सत्यापित करने के लिए RegularExpressionValidator का उपयोग करने का प्रयास कर रहा हूं। मेरे पास यह काम कर रहा है, लेकिन यह केवल अक्षरों और संख्याओं को स्वीकार करता है। मैं किसी भी वर्णों की अनुमति देना चाहता हूं, केवल चेक के साथ 25 से अधिक वर्ण नहीं हैं।RegularExpressionValidator इनपुट प्रकार को सीमित करने के लिए चरित्र प्रकारों को सीमित करने के लिए

<asp:TextBox ID="MenuLabel" runat="server" /> 
<asp:RegularExpressionValidator ValidationExpression="^[a-zA-Z0-9]{25}$" ID="MenuLabelVal" runat="server" ErrorMessage="Menu Label must be no longer than 25 characters." ControlToValidate="MenuLabel" /> 

रेगुलर एक्सप्रेशन मेरे मजबूत सूट नहीं हैं, इसलिए किसी ने मुझे बता मैं कैसे ^[a-zA-Z0-9]{25}$ संशोधित सिर्फ अल्फा-न्यूमेरिक बजाय कोई भी वर्ण अप करने के लिए 25 बार प्रतिनिधित्व करने के लिए कर सकते हैं।

नोट 1: मेरे पास 1 या अधिक वर्ण सुनिश्चित करने के लिए पहले से ही RequiredFieldValidator है।

नोट 2: मैं जानता हूँ कि मैं सिर्फ पाठ बॉक्स पर MaxLength संपत्ति इस्तेमाल कर सकते हैं, लेकिन इस प्रपत्र मौजूदा डेटा को संपादित करने के लिए भी है, और मैं यह बस जब संपादन मौजूदा रिकॉर्ड को काटना नहीं करना चाहती। मैं एक वैधकर्ता को कार्यान्वित करना पसंद करूंगा जो उपयोगकर्ताओं को उन वास्तविक डेटा को संपादित करने के लिए स्पष्ट करता है, जिन्हें उपयोगकर्ता को महसूस किए बिना फ़ॉर्म को छोटा करने के बजाय मूल्य को छोटा करने की आवश्यकता होती है।

नोट 3: मैं एक कस्टम सत्यापनकर्ता जैसे वैकल्पिक समाधानों के लिए खुला हूं, जब तक कि यह केवल क्लाइंट-साइड सत्यापन पर निर्भर करता है। मेरे पास सर्वर पर कस्टम मान्य हैंडलर लिखने के लिए कोड-बैक तक पहुंच नहीं है।

उत्तर

14
.{1,25} 

के लिए मूल्य तक सीमित रखना चाहिए कोई भी 1 से 25 बार। सुनिश्चित नहीं हैं कि यह कैसे यूनिकोड इनपुट हालांकि साथ सौदा होगा - यह एक एकल चार के रूप में मल्टी-बाइट वर्ण माना जा सकता है, तो आप एक डेटाबेस

संभवतः आप ^.{1,25}$ चाहते हो सकता है के लिए सीमित करने के लिए इस प्रयोग कर रहे हैं सावधान रहना होगा, लेकिन मैं भी इस बारे में सोच सरल संस्करण

+0

धन्यवाद मैं इसे आज़मा दूंगा। वर्तमान फॉर्म में कोई सत्यापन नहीं है, केवल 125 के लिए टेक्स्टबॉक्स पर एक अधिकतम लम्बाई सेट है, इसलिए कम से कम इसकी पर हार्ट सीमा है। –

+0

दूसरा संस्करण तेज़ होना चाहिए – abatishchev

+0

ठीक है मैंने दोनों '। {25}' और '^। {25} $' की कोशिश की है। दोनों शो 0 या 25 वर्णों के साथ मान्य हैं। 1 से 24 मान्य के रूप में मान्य है। क्या यह '^। {1,25}' होना चाहिए? –

4

आप एक कस्टम सत्यापनकर्ता का उपयोग करते हैं, तो आप कुछ इस तरह कर सकता है:

<asp:CustomValidator ID="MenuLabelVal" runat="server" ClientValidationFunction="ValidateFieldLegth" ErrorMessage="Menu Label must be no longer than 25 characters." ControlToValidate="MenuLabel" EnableClientScript="true" /> 

और अपने जावास्क्रिप्ट कुछ इस तरह होगा:

<script>  
    function ValidateFieldLegth(sender, args) { 
     var v = document.getElementById('<%=MenuLabel.ClientID%>').value; 
     if (v.length > 25) { 
      args.IsValid = false; 
     } 
     else { 
      args.IsValid = true; 
     } 
    } 
</script> 
+0

इस समाधान के लिए धन्यवाद चाहिए। यह वास्तव में बहुत अच्छी तरह से काम करता है, लेकिन मैंने नियमित अभिव्यक्ति दृष्टिकोण के साथ रहने का फैसला किया क्योंकि मार्कअप स्टैंडपॉइंट से अतिरिक्त स्क्रिप्टिंग शुरू करने से सरल था। मैंने वैसे भी पूरी तरह वैध दृष्टिकोण के रूप में इसे +1 किया। –

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