package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)^ # start of line
(?=(?:.*[A-Z]){2,}) # 2 upper case letters
(?=(?:.*[a-z]){2,}) # 2 lower case letters
(?=(?:.*\d){2,}) # 2 digits
(?=(?:.*[!@#$%^&*()\-_=+{};:,<.>]){2,}) # 2 special characters
(.{8,}) # length 8 or more
$
`)
var str = `Valid:
ABab12!!
ZZzz11#####
PAssword12!!
PassWord12!!
AA aa 12 ##
A1#a2Z3z5%
Not Valid:
AAaa1234
Password12!!
Abab12!!
ZZzz11#
password12!!
Password12!!
AAAa12##
A1 a2Z3z5%
`
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/