मैं एक हेक्स ग्रेस्केल रंग से मेल खाने के लिए रूबी रेगेक्स चाहता हूं।रूबी रेगेक्स ग्रेस्केल रंग मिलान करने के लिए
तो यह
#000000
#ababab
#ffffff
लेकिन नहीं
आदि
मैं एक हेक्स ग्रेस्केल रंग से मेल खाने के लिए रूबी रेगेक्स चाहता हूं।रूबी रेगेक्स ग्रेस्केल रंग मिलान करने के लिए
तो यह
#000000
#ababab
#ffffff
लेकिन नहीं
आदि
\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]
इस प्रयास करें:
^#([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
मिलान)।
मैं आपके regex को छोड़कर खुद को हेक्साडेसिमल संख्या तक सीमित नहीं करता है, मैं ऊपर उठाना होगा। – Jeremy
@ जेरेमी, अच्छा कॉल! :) –
यदि वांछित है तो आप '[[: xdigit:]]' '[0-9a-fA-F]' के स्थान पर उपयोग कर सकते हैं। –
क्या \9' नया है 1.9? यह स्थानीय रूप से काम करता है (1.9.2 के साथ) लेकिन रूबुलर पर नहीं (1.8.7 के साथ)। – Jeremy