如何在 kotlin 中验证允许字符和特殊字符但不允许带有字符或数字的数字

问题描述 投票:0回答:1
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")
    }
}

}

我们期待结果 无名氏有效 .史密斯有效 爱丽丝.已验证 Doe#Smith 有效 Doe#Smith99 无效 65464546499 无效 MM66M无效

但结果是所有值都有效。这里有什么问题

java android regex kotlin
1个回答
0
投票

您只需在 if 语句中使用

and
代替
or
我帮你编辑了

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")
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.