3 回答
TA贡献1865条经验 获得超7个赞
正确的正则表达式是……这里没有正则表达式。
您可以定义一个自定义函数来验证密码,并将其与其他有助于验证字段的框架结合使用,例如mccoyst/validate(在关于参数验证的讨论中提到)
你也有go-validator/validator允许定义类似的验证(但我仍然会使用自定义验证器而不是一个或几个正则表达式)。
注意:go regexp基于re2,一个高效的、有原则的正则表达式库)。
因此,主要的权衡是没有反向引用,例如:
(abc)\1
并且没有匹配的后视。
作为交换,您将获得高速正则表达式。
TA贡献1812条经验 获得超5个赞
这实际上是不可能的,因为 Go 的正则表达式不支持回溯。
但是,它很容易实现,一个简单的例子:
func verifyPassword(s string) (sevenOrMore, number, upper, special bool) {
letters := 0
for _, c := range s {
switch {
case unicode.IsNumber(c):
number = true
case unicode.IsUpper(c):
upper = true
letters++
case unicode.IsPunct(c) || unicode.IsSymbol(c):
special = true
case unicode.IsLetter(c) || c == ' ':
letters++
default:
//return false, false, false, false
}
}
sevenOrMore = letters >= 7
return
}
- 3 回答
- 0 关注
- 279 浏览
添加回答
举报