package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^[^\W_]+(?:[-_.][^\W_]+){0,3}$`)
var str = `exampletag
example-tag
ex-ample-tag
ex_ample_tag
ex-ample_tag
ex.am-ple_tag
Ex.4m-p1e_t4g
ex-am-pl-et-ag
// and variations where there's more than 3 \`-\` \`_\` or \`.\`
-exampletag
// no starting symbols
exampletag-
// no trailing symbols`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/