gpt4 book ai didi

regex - 是否可以在单个正则表达式中执行所有这些字符串验证?

转载 作者:数据小太阳 更新时间:2023-10-29 03:05:40 24 4
gpt4 key购买 nike

我想弄清楚我是否可以将所有这些语句组合成一个正则表达式检查,但我不是特别精通正则表达式,在这些单独的检查中这样做是我迄今为止最好的:

func ValidatePwd(pwd string) error {
pwdRuneCount := utf8.RuneCountInString(pwd)
containsAtLeastOneDigit, err := regexp.MatchString("[0-9]", pwd)
if err != nil {
return err
}
containsAtLeastOneLowercase, err := regexp.MatchString("[a-z]", pwd)
if err != nil {
return err
}
containsAtLeastOneUppercase, err := regexp.MatchString("[A-Z]", pwd)
if err != nil {
return err
}
containsAtLeastOneNonWordChar, err := regexp.MatchString(`[\W]`, pwd)
if err != nil {
return err
}
if pwdRuneCount < PwdMinRuneCount || pwdRuneCount > PwdMaxRuneCount || !containsAtLeastOneDigit || !containsAtLeastOneLowercase || !containsAtLeastOneUppercase || !containsAtLeastOneNonWordChar {
return PwdErr
}
return nil
}

最佳答案

这是可能的,但它会很难看。一个正则表达式必须包含 24 个形式为 [0-9].*[a-z].*[A-Z].*\W 的子表达式,以匹配每个可能的顺序,其中四个需要可能会出现字符类型。你现在做的方式好多了。

顺便说一句,与其检查 MatchString 调用的错误(这意味着正则表达式无效),不如使用 regexp.MustCompile 预编译它们,如果正则表达式无效,它会出现 panic 。

关于regex - 是否可以在单个正则表达式中执行所有这些字符串验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40194141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com