The \
backslash isn’t being interpreted by the regex parser, it’s being interpreted in the string literal. You should escape the backslash again:
regexp.Compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")
A string quoted with "
double-quote characters is known as an “interpreted string literal” in Go. Interpreted string literals are like string literals in most languages: \
backslash characters aren’t included literally, they’re used to give special meaning to the next character. The source must include \\
two backslashes in a row to obtain an a single backslash character in the parsed value.
Go has another alternative which can be useful when writing string literals for regular expressions: a “raw string literal” is quoted by `
backtick characters. There are no special characters in a raw string literal, so as long as your pattern doesn’t include a backtick you can use this syntax without escaping anything:
regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`)
These are described in the “String literals” section of the Go spec.