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

检查密码字段是否至少包含1个大写字符、1个数字字符和1个特殊字符的groovy方法,groovy,Groovy,如果groovy中的字符串至少包含1个大写字符、1个数字字符和1个特殊字符,如何编写返回true的函数 提前谢谢请不要这样做。 要求用户使用一些强制字符集只是为了让他的密码“强”,而不是为了便于记忆,这是一个非常糟糕的主意 请阅读并重新考虑您的设计 更新 如果你真的需要这样做(也许这个问题与密码无关),你应该使用/\p{Lu}/检查大写字母,或者用/[A-Z]/代替,因为大写字母比英语要多得多 SPECIAL_CHARS = '.,-_' as List // Change this list

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

提前谢谢

请不要这样做。 要求用户使用一些强制字符集只是为了让他的密码“强”,而不是为了便于记忆,这是一个非常糟糕的主意

请阅读并重新考虑您的设计


更新 如果你真的需要这样做(也许这个问题与密码无关),你应该使用
/\p{Lu}/
检查大写字母,或者用
/[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('Σ.९')
请不要这样做。 要求用户使用一些强制字符集只是为了让他的密码“强”,而不是为了便于记忆,这是一个非常糟糕的主意

请阅读并重新考虑您的设计


更新 如果你真的需要这样做(也许这个问题与密码无关),你应该使用
/\p{Lu}/
检查大写字母,或者用
/[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('Σ.९')
您可以使用来独立测试所述需求组件

def isValid (pwd) {
    return pwd.find(/[A-Z]/) && pwd.find(/\d/) && pwd.find(/[@#$%^&+=]/)
    //              or insert your 'special characters' here ^
}
您可以使用来独立测试所述需求组件

def isValid (pwd) {
    return pwd.find(/[A-Z]/) && pwd.find(/\d/) && pwd.find(/[@#$%^&+=]/)
    //              or insert your 'special characters' here ^
}

打开
groovyConsole
和一个web浏览器,开始尝试。哦,是的,当然!测试驱动开发,不是吗?。。。如果否决票是因为你不应该有这样的密码要求,我认为这是不公平的。我们是来学习的。没关系,OP还不知道这一点,现在他知道了为什么这是个坏主意。也考虑到他可能不负责这些要求。@ RLVTAN同意,即使要求会带来不良的可用性,但这并不意味着这是一个很糟糕的问题,或者这个问题应该被关闭。问题措辞清晰,有明确的答案(或许多有效答案)。人们可以提出替代方案,但我们不应该因为不喜欢他们的要求或技术而惩罚他们。如果我们这样做了,所有的ClearCase问题都将结束:)你打开
groovyConsole
和一个web浏览器并开始尝试。哦,是的,当然!测试驱动开发,不是吗?。。。如果否决票是因为你不应该有这样的密码要求,我认为这是不公平的。我们是来学习的。没关系,OP还不知道这一点,现在他知道了为什么这是个坏主意。也考虑到他可能不负责这些要求。@ RLVTAN同意,即使要求会带来不良的可用性,但这并不意味着这是一个很糟糕的问题,或者这个问题应该被关闭。问题措辞清晰,有明确的答案(或许多有效答案)。人们可以提出替代方案,但我们不应该因为不喜欢他们的要求或技术而惩罚他们。如果我们这样做了,所有的ClearCase问题都将结束:)可能是个好主意,但不是正确的答案。考虑移植评论?@ PassiLee,我现在更新答案是“正确的”。但我也会把这是一个坏主意的评论作为我最初的回答。我理解,它可能不正确,因为它没有回答OP问题,但在这种情况下,不做所要求的是正确的方式。我不希望看到一个答案只对所问的问题做出回应,而不告诉我这是一个被接受的坏主意。+1用于使用unicode正则表达式。太多的开发人员相信世界只是一个A-Z。这可能是一个好主意,但不是一个正确的答案。考虑移植评论?@ PassiLee,我现在更新答案是“正确的”。但我也会把这是一个坏主意的评论作为我最初的回答。我理解,它可能不正确,因为它没有回答OP问题,但在这种情况下,不做所要求的是正确的方式。我不希望看到一个答案只对所问的问题做出回应,而不告诉我这是一个被接受的坏主意。+1用于使用unicode正则表达式。太多的开发者相信这个世界只是一个空中楼阁。