java中用于密码验证的正则表达式,允许某些特殊字符,但不是必需的
必填字段为一个字母和一个数字。 8-20个字符长。 允许使用特殊字符,但不强制使用!以及"
String regex = "^(?=.*[0-9])"
+ "(?=.*[a-zA-Z])"
+ "[!@]*.{8,20}$";
我尝试了上面的方法,但对特殊角色不起作用 我做错了什么
你可以在下面搜索框中键入要查询的问题!
必填字段为一个字母和一个数字。 8-20个字符长。 允许使用特殊字符,但不强制使用!以及"
String regex = "^(?=.*[0-9])"
+ "(?=.*[a-zA-Z])"
+ "[!@]*.{8,20}$";
我尝试了上面的方法,但对特殊角色不起作用 我做错了什么
# 1 楼答案
如果特殊字符仅限于
!
和@
,则以下regexp应执行此操作:^{} :
(?=.*[0-9])
向前看以检查至少一个数字(?=.*[a-zA-Z])
向前看以检查至少一个英文字母[0-9a-zA-Z!@]{8,20}
指定长度在8到20个字符之间的有限字符集(数字、字母、!
、@
)# 2 楼答案
一个单一的正则表达式是不必要的复杂:一个字母和一个数字将需要处理两个订单,字母。。。数字,还有数字。。。信(向前看/向后看也很冗长。)
这更具可读性,甚至可能更高效、更快
您的错误:重复@!,排他性、非强制性外观落后