2010-08-05 8 views
5

searchString = "23423asdfa-''"नियमित अभिव्यक्ति है कि किसी भी संख्या या अक्षर या डैश

को देखते हुए मेल यह नियमित अभिव्यक्ति गलत पर मूल्यांकन करना चाहिए लेकिन यह नहीं है! कोई विचार?

Regex rgx = new Regex(@"[\w-]*"); 
rgx.IsMatch(searchString) 
+0

आह ने दो उद्धरणों में अंत में दो apostrophes खो दिया। हाँ, जेरेडपार के जवाब को कवर करना चाहिए। –

उत्तर

9

ऐसा इसलिए है क्योंकि आपने इसे संपूर्ण स्ट्रिंग से मेल खाने के लिए बाध्य नहीं किया है। इसलिए इसे स्ट्रिंग के सबसेट पर मैचों पर विचार करने की अनुमति है। स्ट्रिंग का एक बहुत बड़ा सबसेट डेटा से मेल खाता है इसलिए रेगेक्स सही होता है।

पूरे इनपुट से मेल खाने के लिए इसे मजबूर करने के लिए निम्न का प्रयास करें।

Regex rgx = new Regex(@"^[\w-]*$"); 
rgx.IsMatch(searchString) 
+0

धन्यवाद! मुझे पता था कि मैं कुछ सचमुच सरल भूल रहा था। – Arizona1911

2

आपको अपनी अभिव्यक्ति को एंकर करने की आवश्यकता है। यदि आप नहीं करते हैं, तो इनपुट इनपुट के किसी भी सबस्ट्रिंग, रेगेक्स मैच को सफल माना जाता है। रेगेक्स को "^ [\ w -] * $" में बदलें जहां^और $ क्रमशः स्ट्रिंग की शुरुआत और अंत से मेल खाएंगे।

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