我正在尝试运行以下代码来验证我的正则表达式的密码字符串。但它总是回归虚假。我做错了什么?
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))
}
答案 0 :(得分:1)
您正在使用原始字符串,但正在转义导致文字匹配\S
的最后一个\S
。如果我删除额外的反斜杠,你的测试用例对我有效。正如其他人所说,你可以完全删除那个节。
所以这......
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!\-_?&])(?=\\S+$).{8,}
^
|
Remove -+
成为这个
^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%!\-_?&])(?=\S+$).{8,}
我使用Regex101来帮助我,这似乎是将正则表达式转换成英语的好方法。