Ruby Regex匹配灰度颜色

时间:2011-06-30 13:43:19

标签: ruby regex

我想要一个红宝石正则表达式来匹配十六进制灰度颜色。

所以它会匹配

#000000
#ababab
#ffffff

但不是

#ccddcc
#afafa0

2 个答案:

答案 0 :(得分:9)

\h是十六进制的ruby正则表达式代码。 (...)捕获子匹配,​​\1允许您引用第一个子匹配:

/#(\h\h)\1\1/

in irb:

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

答案 1 :(得分: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)。