Chcę, aby wyrażenie rubowe pasowało do koloru szesnastkowego w skali szarości.Ruby Regex, aby dopasować kolor skali szarości
Tak byłoby dopasować
#000000
#ababab
#ffffff
lecz nie
itp
Chcę, aby wyrażenie rubowe pasowało do koloru szesnastkowego w skali szarości.Ruby Regex, aby dopasować kolor skali szarości
Tak byłoby dopasować
#000000
#ababab
#ffffff
lecz nie
itp
\h
jest rubin kod regex dla szesnastkowym. (...)
przechwytuje submatch i \1
pozwala odwołać się do pierwszego submatch:
/#(\h\h)\1\1/
w IRB:
>> %w{ #000000 #ababab #ffffff #ccddcC#afafa0 }.map { |s| s =~ /#(\h\h)\1\1/ }
=> [0, 0, 0, nil, nil]
Spróbuj tego:
^#([0-9a-fA-F][0-9a-fA-F]?)\1\1$
który będzie pasował:
#000000
#aaa
#ababab
#ffffff
jak widać na Rubular: http://rubular.com/r/hDPrvr1dvu
To albo powtarza pojedynczy znak 3 razy (pasujących #AAA
) lub powtórzenie podwójnym Char 3 razy (pasująca #666666
i #121212
).
Chciałbym awansować, z wyjątkiem tego, że wyrażenie regularne nie ogranicza się do liczb szesnastkowych. – Jeremy
@Jeremy, dobry telefon! :) –
Możesz użyć '[[: xdigit:]]' zamiast '[0-9a-fA-F]', jeśli chcesz. –
Czy '\ h' nowy w 1.9? Działa lokalnie (z 1.9.2), ale nie na Rubular (z 1.8.7). – Jeremy