我想要一个红宝石正则表达式来匹配十六进制灰度颜色。
所以它会匹配
#000000
#ababab
#ffffff
但不是
#ccddcc
#afafa0
等
答案 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
)。