2011-02-17 14 views
12

मैं एक स्ट्रिंग है कि या तो खाली हो या निम्न जैसे 1 या 2 उस में नंबर हो सकता है मैच के लिए कोशिश कर रहा हूँ:रेगुलर एक्सप्रेशन से 0-2

"" (रिक्त) "1 " " 23 "

अधिक संख्याओं या गैर-संख्यात्मक वर्णों के साथ स्ट्रिंग का मिलान नहीं होना चाहिए। मेरे करीबी अनुमान regex है: "। संख्या 0 से 9 तक होने वाली 0 2 बार"

[0-9] {0,2}

कौन सा मैं कहना है पढ़ हालांकि, अभ्यास में मुझे लगता है कि रेगेक्स भी "333" जैसे लंबे तारों से मेल खाता है। नियमित अभिव्यक्तियों में स्ट्रिंग लंबाई को प्रतिबंधित करना कैसे संभव है?

+0

आप किस भाषा का उपयोग कर रहे हैं? – Donut

+1

सी # मेरी पसंद की भाषा है। –

उत्तर

36

निम्नलिखित regex का उपयोग करें:

^[0-9]{0,2}$ 

आप लगभग यह था - ^ और $ पात्रों एंकर कि शुरुआत और स्ट्रिंग के अंत से मेल खाते हैं, क्रमशः रहे हैं।

एंकर पर एक अधिक विस्तृत चर्चा के लिए, here देखें:

[लंगर] किसी भी चरित्र बिल्कुल मेल नहीं खाते। इसके बजाय, वे पात्रों के बाद या उसके बीच पहले एक स्थिति से मेल खाते हैं। वे एक निश्चित स्थिति पर रेगेक्स मैच "एंकर" करने के लिए इस्तेमाल किया जा सकता है।

5

प्रारंभ और स्ट्रिंग के अंत के लिए अक्षरों से परे का उपयोग करें:

^[0-9]{0,2}$ 

आप उन्हें का उपयोग नहीं करते हैं, तो यह स्ट्रिंग में कहीं भी मेल खाता है, और "12" है, जो मेल खाता है, "का हिस्सा है 123 "।

^[0-9]{0,2}$ 

अन्यथा regex खुशी से सबस्ट्रिंग मिलान हो जाएगा:

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