Nach dem Lesen von this post, weiß ich, dass ich ein backquotes (`) verwenden muss, um mein Regex-Muster zu umhüllen. Jetzt habe ich Regex Muster /^(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[[email protected]#$%^&*()]*$/
, um das Passwortmuster zu überprüfen, ob es korrekt ist. Ich habe es mit PHP getestet und es funktioniert einwandfrei. Aber es funktioniert nicht in Go. Warum?Regex-Muster zum Überprüfen von Passwork-Arbeit auf PHP, aber nicht auf Go
Übrigens, was ist der Typ der Backquoted (`) Variable? es scheint nicht string
Typ. Wie kann ich diesen Variablencontainer deklarieren?
Testing-Code
package main
import(
"fmt"
"regexp"
)
func main(){
re := regexp.MustCompile(`/^(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[[email protected]#$%^&*()]*$/`)
fmt.Println(re.MatchString("aSfd46Fgwaq"))
}
Testing Ergebnis
Running...
panic: regexp: Compile(`/^(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[[email protected]#$%^&*()]*$/`): error parsing regexp: invalid or unsupported Perl syntax: `(?=`
goroutine 1 [running]:
panic(0x4efae0, 0xc82000a340)
/usr/local/go/src/runtime/panic.go:481 +0x3e6
regexp.MustCompile(0x576140, 0x4b, 0x100000000)
/usr/local/go/src/regexp/regexp.go:232 +0x16f
main.main()
/home/casper/.local/share/data/liteide/goplay.go:9 +0x30
exit status 2
Error: process exited with code 1.
Thank you!
Go regex nicht lookarounds und regex Begrenzungszeichen nicht unterstützt . –
Gibt es irgendwelche anderen Plugins, die ich von Github für dieses Regex-Muster verwenden kann? – Casper
Der '(?!. * \ S)' Lookahead ist redundant, da das konsumierende Muster nicht mit Whitespaces übereinstimmt. –