标签: java regex
我在Java应用程序中创建了用于密码验证的正则表达式。我创建的正则表达式如下所示。
^[\\p{Alnum}#.!@$*&_]{5,12}$
我错过了1和2,就像我给#34; gjsajhgjhagfj"或" 29837846876",它应该失败。但它没有发生。
有人可以帮忙吗?
答案 0 :(得分:3)
您可以使用前瞻来强制条件1& 2:
^(?i)(?=.*[a-z])(?=.*[0-9])[a-z0-9#.!@$*&_]{5,12}$
DEMO
(?i)用于不敏感匹配,与编译函数的Pattern.CASE_INSENSITIVE标志相同:
(?i)
Pattern.CASE_INSENSITIVE
Pattern.compile(regex, Pattern.CASE_INSENSITIVE)
您可以阅读有关Lookaheads HERE