diff --git a/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt b/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt index 0dd2ce6..7a7e55d 100644 --- a/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt +++ b/app/src/main/java/com/project/survey/ui/login/UpdatePwdActivity.kt @@ -60,8 +60,25 @@ class UpdatePwdActivity : BaseBindingActivity() { toast("新密码输入不一致") return@setOnClickNoRepeatListener } + if (!isValidPassword(newPassword)){ + toast("密码需包含大写、小写、数字、特殊字符至少3种且长度12位以上") + return@setOnClickNoRepeatListener + } viewModel.updatePassword(oldPassword, newPassword) } } + private fun isValidPassword(password: String): Boolean { + if (password.length < 12) return false + + val criteriaCount = listOf( + Regex(".*[A-Z].*"), // 大写字母 + Regex(".*[a-z].*"), // 小写字母 + Regex(".*\\d.*"), // 数字 + Regex(".*[!@#\$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?].*") // 特殊字符 + ).count { it.matches(password) } + + return criteriaCount >= 3 + } + } \ No newline at end of file