在閱讀this post後,我知道我需要使用反引號(`)來包裝我的正則表達式模式。現在我有正則表達式/^(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[[email protected]#$%^&*()]*$/
來檢查密碼模式是否正確。我已經用PHP測試過它,它工作正常。但它在Go中不起作用。爲什麼?正則表達式檢查PHP的passwork工作,但不工作去
順便說一句,反引號(`)變量的類型是什麼?它似乎不是string
類型。我怎樣才能聲明這個變量容器?
測試代碼
package main
import(
"fmt"
"regexp"
)
func main(){
re := regexp.MustCompile(`/^(?=^.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s)[[email protected]#$%^&*()]*$/`)
fmt.Println(re.MatchString("aSfd46Fgwaq"))
}
測試結果
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.
謝謝!
轉到正則表達式不支持lookarounds和正則表達式的分隔符。 –
是否有任何其他插件,我可以'從github'獲取'用於這個正則表達式模式? – Casper
'(?!。* \ s)'lookahead是冗餘的,因爲消費模式不匹配空格。 –