2011-06-30 8 views

उत्तर

9

\h हेक्साडेसिमल के लिए गहरे लाल रंग का regex कोड है से मेल खाएगा। (...) एक submatch कैप्चर करता है, और \1 आप पहली बार submatch का उल्लेख कर सकते हैं:

/#(\h\h)\1\1/ 
आईआरबी में

:

>> %w{ #000000 #ababab #ffffff #ccddcC#afafa0 }.map { |s| s =~ /#(\h\h)\1\1/ } 
=> [0, 0, 0, nil, nil]               
+1

क्या \9' नया है 1.9? यह स्थानीय रूप से काम करता है (1.9.2 के साथ) लेकिन रूबुलर पर नहीं (1.8.7 के साथ)। – Jeremy

3

इस प्रयास करें:

^#([0-9a-fA-F][0-9a-fA-F]?)\1\1$ 

जो मिलान हो जाएगा:

#000000 
#aaa 
#ababab 
#ffffff 

के रूप में आप Rubular पर देख सकते हैं: http://rubular.com/r/hDPrvr1dvu

यह या तो एक एकल वर्ण को दोहराता है 3 बार (#AAA मिलान) या एक डबल चार दोहराने 3 बार (#666666 और #121212 मिलान)।

+0

मैं आपके regex को छोड़कर खुद को हेक्साडेसिमल संख्या तक सीमित नहीं करता है, मैं ऊपर उठाना होगा। – Jeremy

+0

@ जेरेमी, अच्छा कॉल! :) –

+0

यदि वांछित है तो आप '[[: xdigit:]]' '[0-9a-fA-F]' के स्थान पर उपयोग कर सकते हैं। –

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