package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^(?! )(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[[:punct:]])^[ -~]{8,255}(?<!\s)$`)
var str = `Should pass:
aA12345678.
Should fail:
No punct:
aA123456
No lower:
A123456.
No upper:
a123456.
Too short:
aA1.
Too long:
aA01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789.
Starts with a space:
aA12345678.
Ends with a space:
aA12345678. `
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/