fun main() {
val regex = Regex("^[a-zA-Z\\s!@#\$%^&*()-_=+\\\\|\\[{\\]};:'\",<.>/?]*\$")
val names = listOf("John Doe", ".Smith", "Alice.", "Doe#Smith", "Doe#Smith99", "65464546499", "MM66M")
for (name in names) {
if (!name.matches(Regex(".*\\d.*")) || regex.matches(name)) {
println("$name is valid")
} else {
println("$name is invalid")
}
}
}
here we expect result
John Doe is valid
.Smith is valid
Alice. is valid
Doe#Smith is valid
Doe#Smith99 is invalid
65464546499 is invalid
MM66M is invalid
but result come all values valid . what problem here
>Solution :
You just need to use and instead of or in the if statement
I edited it for you
fun main() {
val regex = Regex("^[a-zA-Z\\s!@#\$%^&*()-_=+\\\\|\\[{\\]};:'\",<.>/?]*\$")
val names = listOf("John Doe", ".Smith", "Alice.", "Doe#Smith", "Doe#Smith99", "65464546499", "MM66M")
for (name in names) {
if (!name.matches(Regex(".*\\d.*")) && regex.matches(name)) {
println("$name is valid")
} else {
println("$name is invalid")
}
}
}