面试题答案
一键面试import java.util.regex.Pattern
fun main() {
val userPasswordList = listOf("user_12345:password123!@#", "user123:Pass123$", "invalid_user:pass123")
for (userPassword in userPasswordList) {
val parts = userPassword.split(':')
if (parts.size == 2) {
val username = parts[0]
val password = parts[1]
val isValidUsername = Pattern.matches("^[a-zA-Z0-9]{5,10}$", username)
val isValidPassword = Pattern.matches("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*]).{8,}$", password)
if (isValidUsername && isValidPassword) {
println("$username:$password 是有效的")
} else {
println("$username:$password 是无效的")
}
} else {
println("$userPassword 格式不正确")
}
}
}
解释:
- 使用
Pattern.matches
方法来匹配正则表达式。 - 用户名的正则表达式
^[a-zA-Z0-9]{5,10}$
表示以字母或数字开头和结尾,长度在5到10之间。 - 密码的正则表达式
^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*]).{8,}$
表示至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符,且长度至少为8。