要求用户使用一些强制性字符只是为了让他的密码"强",而不是容易记住,这是一个非常糟糕的主意.
请阅读此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)