2012-02-21 18 views
5

में मैं एक regex पुरुष नहीं कर रहा हूँ, तो मैं एक छोटे से मदद की जरूरत है, बस नहीं कर सकते यह चारों ओर मेरे सिर मिलता है ...REGEX - विशेष वर्ण कहीं भी मैच स्ट्रिंग

मैं पंजीकरण पृष्ठ लिख रहा हूँ और asp.net का उपयोग प्रमाणकों। मुझे एक शब्द के भीतर कहीं भी एक विशेष चरित्र से मेल खाने के लिए एक रेगेक्स सत्यापनकर्ता की आवश्यकता है, इसलिए यह आवश्यकता को पूरा करेगा जो कहता है कि "आईडी में कम से कम एक विशेष चरित्र होना चाहिए।" अनुमत वर्ण हैं: ! "# $% & '() * +, - /:।? < => @ [\]^ _` | रैपिंग के साथ समस्याओं ~

बार फिर, मैं एक जूनियर हूँ, और होने {} इस पल में इस चीज के चारों ओर मेरे सिर ...

के लिए अब मैं

[\[\]\^\$\.\|\?\*\+\(\)\\~`[email protected]#%&-_+={}'""<>:;, ]{1,} 

है, लेकिन यह किसी कारण के लिए के रूप में अच्छी संख्या से मेल खाता है, और कभी कभी शब्द के प्रारंभ में अक्षर से मेल नहीं खाते। ..

तो कृपया, अगर कोई मुझे इसके साथ मदद कर सकता है ...

+0

मैं वेबसाइटों है कि आईडी और पासवर्ड की आवश्यकता होती है विशेष वर्ण के लिए नफरत आशुलिपि है –

+0

बस अतिरिक्त नोट:। यदि आप ASP.NET सदस्यता मुकदमा कर रहे हैं, तो आप इस्तेमाल कर सकते हैं [ 'MinRequiredNonAlphanumericCharacters'] (http://msdn.microsoft.com/en-us/library/system.web.security.membership .minrequirednonalphanumericcharacters.aspx) -प्रोपर्टी यह सुनिश्चित करने के लिए कि पासवर्ड में विशेष वर्ण दर्ज किए गए हैं। –

+0

@TimSchmelter - noooo, माइक्रोसॉफ्ट पर मुकदमा नहीं कर रहा :) :) कारण मैं सदस्यता प्रदाता में इसका उपयोग नहीं कर सकता, क्योंकि यह सत्यापन वैकल्पिक होगा - ग्राहक की जरूरतों के आधार पर इसे चालू या बंद किया जा सकता है ... और हम नहीं करेंगे हमारे ऐप के सभी ग्राहकों के लिए इसे लागू करने में सक्षम हो। साइड नोट के लिए धन्यवाद .. – Alex

उत्तर

4

आपको '-' और '!' से बचने की जरूरत है

[\[\]\^\$\.\|\?\*\+\(\)\\~`\[email protected]#%&\-_+={}'""<>:;, ]{1,} 
+0

हाँ .. मैंने इसे अनदेखा किया है ... हालांकि, किसी कारण के लिए "asdf3! #" के रूप में स्ट्रिंग आपकी अभिव्यक्ति का उपयोग करके मान्य नहीं करना चाहती है ... हो सकता है कि उसके पास .NET के साथ कुछ करना है ... – Alex

+0

ऐसा लगता है कि आपको भागने की जरूरत है! साथ ही – David

2

यह करना आसान होगा विपरीत

^[0-9]|[a-z]|[A-Z]$

अगर यह

+1

इसका उपयोग नहीं कर सकता है, यह वर्णों से मेल खाएगा जो मुझे आवश्यक वर्णों में परिभाषित नहीं हैं, जैसे कि हुकुम या मुद्रा संकेत ... – Alex

+2

इस तरह से, शायद यह चौड़ा बेहतर [^ a-zA-Z0- 9] – BigMan

+0

सफेद रिक्त स्थान को भी छोड़ना बेहतर होगा '[^ a-zA-Z0-9 \ s] ' –

-4

से मेल नहीं खाता आप यहाँ regex के बारे में अधिक जान सकते हैं यह एक विशेष चरित्र है: http://regex.learncodethehardway.org/

ऐसा करना मुश्किल नहीं है;

शुभकामनाएं;

+0

लिंक के लिए धन्यवाद, मैं इस – Alex

+0

rtfm को देखता हूं, लेकिन वास्तव में – Letseatlunch

+2

SO RTFM उत्तरों के लिए नहीं है। – toobulkeh

1

एएसपीनेट या सत्यापन विशेषज्ञ नहीं है। लेकिन, चरित्र वर्गों को केवल कुछ वर्णों की आवश्यकता होती है जैसे []। डैश - वर्णों की एक श्रृंखला का प्रतिनिधित्व करता है। यदि शाब्दिक के रूप में उपयोग किया जाता है, तो इसे बचाना और कहीं भी रखा जा सकता है, या कक्षा की शुरुआत या अंत ([-aa] या [aa-]) पर रखा जा सकता है और इसे शाब्दिक माना जा सकता है। इसके अलावा, कक्षा की शुरुआत में एक देखभाल, 'ऋणात्मक' वर्ग का अर्थ है, किसी भी पात्र लेकिन इन ([^not me])।

किसी विशेष इंजन के लिए विशेष वाक्यविन्यास वाले वर्गों में अन्य संरचनाएं हो सकती हैं (.NET इस तरह से हो सकता है, मुझे यकीन नहीं है)। मुझे लगता है कि कुछ अनुक्रम एक उपclass भी ट्रिगर।

यहां मेरे टेस्ट केस हैं जो आपके विशेष वर्णों का उपयोग करके एएसपीनेट सत्यापनकर्ता के साथ हैं। वे अवशेष हो सकते हैं मुझे यकीन नहीं है। दोनों रिक्त इनपुट को मान्य नहीं करते हैं, यह एक regex चीज नहीं हो सकता है।

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
     ValidationExpression="^.*[\[\]^$.|?*+()\\~`[email protected]#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></asp:RegularExpressionValidator> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

अगर ऐसा लगता है तो यह सुरक्षा समस्या का ख्याल रखता है। <+'alpha char' पर ध्यान दें जहां 'अल्फा' कुछ मानकों के अनुसार मान्य यूनिकोड वर्णों की एक श्रृंखला को संदर्भित करता है।

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ControlToValidate="TextBox1" ErrorMessage="Input is not valid." 
     ValidationExpression="^(?!.*&lt;(?:/|[A-Za-z_:])).*[\[\]^$.|?*+()\\~`[email protected]#%&\-_+={}'&quot;&lt;&gt;:;,\ ].*$"></asp:RegularExpressionValidator> 
    <asp:Button ID="Button1" runat="server" Text="Button" /> 

अगर यह रास्ता बंद है तो बस उपेक्षा करें।

0

आप इसे थोड़ा सा ट्रिम कर सकते हैं और चरित्र श्रृंखला से मेल खा सकते हैं।

[^\p{L}] 

मैं अगर आप 1 या अधिक मिलान करने की आवश्यकता के रूप में अपने मामले के लिए विशिष्ट है लगता है, है, तो यह रूप में अच्छी तरह काम करेगा (उदाहरण के लिए, यह सब विशेष (और प्रिंट करने योग्य) वर्ण (यूनिकोड सहित) से मेल खाता है ध्यान दें कि + regex ऑपरेटर के लिए {1,}

[^\p{L}]+ 
संबंधित मुद्दे