वर्णों की संख्या को 10 तक सीमित करने के लिए नियमित अभिव्यक्ति


188

मैं एक नियमित अभिव्यक्ति लिखने की कोशिश कर रहा हूं जो केवल लोअरकेस अक्षर और 10 अक्षरों तक की अनुमति देगा। मेरे पास अब तक इस तरह दिखता है:

pattern: /^[a-z]{0,10}+$/ 

यह काम या संकलन नहीं करता है। मेरे पास एक काम था जो सिर्फ निचले अक्षरों को अनुमति देता था जो यह था:

pattern: /^[a-z]+$/ 

लेकिन मुझे वर्णों की संख्या को 10 तक सीमित करने की आवश्यकता है।


4
{} और + एक ही कार्य (गिनती) करते हैं, इस प्रकार वे निरर्थक हैं, इसलिए त्रुटि।
फीलो

1
आपको '+' को [^ az] {0,10} + $ / से गिराना चाहिए। यह होना चाहिए / ^ [az] {0,10} $ /
SO उपयोगकर्ता

1
ध्यान दें कि पैटर्न ^[a-z]{0,10}+$कुछ भाषाओं पर संकलित है और कुछ उल्लेखनीय हैं जावा, पर्ल (5.10+), पीएचपी, रूबी (1.9+)। अधिक विस्तार के लिए इस पृष्ठ को देखें ।
जेरी

: अग्रदर्शी के माध्यम से भी सार्वभौमिक समाधान देखें नियमित अभिव्यक्ति में सीमित करने वर्ण सीमा
वादज़्मी

जवाबों:


354

घटनाओं की संख्या को नियंत्रित करने के लिए आप घुंघराले ब्रेसिज़ का उपयोग कर सकते हैं। उदाहरण के लिए, इसका अर्थ है 0 से 10:

/^[a-z]{0,10}$/

विकल्प हैं:

  • {3} बिल्कुल 3 घटनाएं;
  • {6,} कम से कम 6 घटनाएं;
  • {2,5} 2 से 5 घटनाएँ।

नियमित अभिव्यक्ति संदर्भ देखें ।

आपकी अभिव्यक्ति के पास कर्ली ब्रेस के बाद एक + था, इसलिए त्रुटि।


एम्बर के साथ क्रोम देव टूल्स में मुझे ^प्रॉपर्टी मैच की शुरुआत को केवल एक नाम के साथ 1234या जैसे नाम के साथ अनुरोध करना 5678पड़ा, और मुझे $ साइन शामिल करना था
डेविन जी रोड

11

/^[a-z]{0,10}$/कार्य करना चाहिए। /^[a-z]{1,10}$/यदि आप कम से कम एक चरित्र से मेल खाना चाहते हैं, तो पसंद /^[a-z]+$/करते हैं।


9

स्ट्रिंग के अंत में लालची मिलान को जोड़ना फायदेमंद हो सकता है, इसलिए आप स्ट्रिंग्स को स्वीकार कर सकते हैं> 10 से और रेगेक्स केवल पहले 10 वर्णों तक वापस आ जाएगा। /^[a-z0-9]{0,10}$?/


8

यह बहुत आपके द्वारा उपयोग किए जा रहे प्रोग्राम पर निर्भर करता है। विभिन्न कार्यक्रम ( Emacs , vi , sed , और Perl ) थोड़ा अलग नियमित अभिव्यक्ति का उपयोग करते हैं। इस मामले में, मैं कहूंगा कि पहले पैटर्न में, अंतिम "+" को हटा दिया जाना चाहिए।


7
grep '^[0-9]\{1,16\}' | wc -l

सीमा के साथ सटीक मिलान गिनती के साथ मायने रखता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.