CSS rgb() Color in GO
Match CSS rgb() and rgba() color functions, including an optional alpha channel.
Try it in the GO tester →Pattern
regexGO
rgba?\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}(?:\s*,\s*(?:0|1|0?\.\d+))?\s*\) (flags: gi)Go (RE2) code
goGo
package main
import (
"fmt"
"regexp"
)
func main() {
re := regexp.MustCompile(`(?i)rgba?\(\s*\d{1,3}\s*,\s*\d{1,3}\s*,\s*\d{1,3}(?:\s*,\s*(?:0|1|0?\.\d+))?\s*\)`)
input := `rgb(255, 87, 51)`
for _, match := range re.FindAllString(input, -1) {
fmt.Println(match)
}
}Uses `regexp.MustCompile` (panics on bad patterns at startup) and `FindAllString` for all matches.
How the pattern works
Matches rgb( or rgba( followed by three comma-separated 1–3 digit components and an optional fourth alpha component (0, 1, or decimal).
Examples
Input
rgb(255, 87, 51)Matches
rgb(255, 87, 51)
Input
rgba(0, 0, 0, 0.5)Matches
rgba(0, 0, 0, 0.5)
Input
color: blue;No match
—