groovy方法检查密码字段是否包含至少1个大写字符,1个数字字符和1个特殊字符

pri*_*dev 0 groovy

true如果字符串在groovy中包含至少1个大写字符,1个数字字符和1个特殊字符,如何编写返回的函数?

提前致谢

epi*_*ian 5

请不要这样做.

要求用户使用一些强制性字符只是为了让他的密码"强",而不是容易记住,这是一个非常糟糕的主意.

请阅读此XKCD漫画并重新考虑您的设计.


更新

如果你真的需要这样做(也许问题与密码无关),你应该使用unicode正则表达式 检查大写字母,/\p{Lu}/或者Character.isUpperCase代替/[A-Z]/,因为有比英语语言更多的大写字母.

SPECIAL_CHARS = '.,-_' as List // Change this list as needed.

def isValid(str) {
    def hasUpperCase   = str.find(/\p{Lu}/)
    def hasDigit       = str.find(/\p{N}/)
    def hasSpecialChar = str.any { it in SPECIAL_CHARS }
    hasUpperCase && hasDigit && hasSpecialChar
}

assert !isValid('asd')
assert !isValid('Asd')
assert !isValid('Asd1')
assert  isValid('Asd1.')
assert !isValid('correct horse battery staple')
assert  isValid('?.?')
Run Code Online (Sandbox Code Playgroud)

  • @paislee我现在已经将答案更新为"正确".但我也会把这个评论作为我最初的答案留下一个坏主意.我理解它可能不正确,因为它不响应OP问题,但在这种情况下,没有做出要求的是正确的方法.而且我不希望看到一个答案,只回应所要求的内容而不告诉被接受是一个坏主意. (3认同)
  • +1使用unicode正则表达式.太多的开发人员认为世界只是AZ. (2认同)