RegEx以确保该字符串包含至少一个小写字母char,大写字母char,数字和符号

RegEx以确保该字符串包含至少一个小写字母char,大写字母char,数字和符号

什么是正则表达式以确保给定字符串包含来自以下每个类别的至少一个字符。

  • 小写字符

  • 大写字母

  • 数字

  • 符号

我知道各组分别是模式[a-z][A-Z]\d_|[^\w](我让他们正确的,不是吗?)。

但是我如何组合它们以确保字符串以任何顺序包含所有这些?


繁华开满天机
浏览 571回答 3
3回答

慕侠2389804

如果您需要一个正则表达式,请尝试:(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)一个简短的解释:(?=.*[a-z])        // use positive look ahead to see if at least one lower case letter exists(?=.*[A-Z])        // use positive look ahead to see if at least one upper case letter exists(?=.*\d)           // use positive look ahead to see if at least one digit exists(?=.*\W])        // use positive look ahead to see if at least one non-word character exists我同意SilentGhost,\W可能有点宽泛。我用这样的字符集替换它:( [-+_!@#$%^&*.,?]当然可以添加更多!)

慕的地6264312

Bart Kiers,你的正则表达式有几个问题。最好的方法是:(.*[a-z].*)       // For lower cases(.*[A-Z].*)       // For upper cases(.*\d.*)          // For digits无论是在开头,结尾还是在中间,你都会以这种方式进行搜索。你有我复杂的密码有很多麻烦。

绝地无双

您可以分别匹配这三个组,并确保它们都存在。此外,[^\w]似乎有点过于宽泛,但如果这是你想要的,你可能想要替换它\W。
打开App,查看更多内容
随时随地看视频慕课网APP