密码正则表达式不在Kotlin中工作

时间:2018-03-27 18:09:22

标签: kotlin

我正在尝试运行以下代码来验证我的正则表达式的密码字符串。但它总是回归虚假。我做错了什么?

fun main(args: Array<String>) {
     val PASSWORD_REGEX = """^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!\-_?&])(?=\\S+$).{8,}""".toRegex()
    val password:String = "Align@123"
    println(PASSWORD_REGEX.matches(password))
}

1 个答案:

答案 0 :(得分:1)

您正在使用原始字符串,但正在转义导致文字匹配\S的最后一个\S。如果我删除额外的反斜杠,你的测试用例对我有效。正如其他人所说,你可以完全删除那个节。

所以这......

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!\-_?&])(?=\\S+$).{8,} 
                                                       ^
                                                       |
                                               Remove -+

成为这个

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!\-_?&])(?=\S+$).{8,}

我使用Regex101来帮助我,这似乎是将正则表达式转换成英语的好方法。