RegExp密码检查器的特定长度/数字计数

时间:2016-11-04 16:16:24

标签: java regex

这是我的RegExp检查程序,目前无效:

String pattern = "(?=.*[0-9]{3})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]{1})(?=\\S+$).{5,15}";

以下是我无法满足的参数:

5-15个字符{5,15}

正好是3位(?=.*[0-9]{3})

字符限制和数字检查都不起作用,我出于某种原因找不到任何示例。我在哪里我错了?显然这是一个安置问题,因为我是一个新手。任何帮助,将不胜感激。其他人(至少有一个大/小写/特殊)我可以见面,但这两件简单的作品我还在苦苦挣扎。

2 个答案:

答案 0 :(得分:1)

对于三位数检查,在正则表达式的任何位置添加此项,因为您使用正向前瞻。

(?=^([^0-9]*[0-9]){3}[^0-9]*$)

对于5-15位数的检查,请添加以下内容:

(?=^.{5,15}$)

您可以在网站https://regex101.com/上使用正则表达式,它会在右侧为您提供解释。

答案 1 :(得分:0)

[0-9]{3}是3个连续的整数。要在字符串中的某个位置允许三个整数,您需要检查每个整数部分。

(?=^[^0-9]*[0-9][^0-9]*[0-9][^0-9]*[0-9][^0-9]*$)

.{5,15}是5到15个字符,但这是字符串中的任何位置,以使其影响需要锚定的整个字符串。所以你的完整表达应该是:

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

演示:https://regex101.com/r/UVK7ev/1