2017-07-18 109 views
-1

我有一个正则表达式查询密码验证,规则是密码必须在8-15个字符之间,1个数字+ 1个特殊字符。它在网络表单中完美运行。正则表达式查询,描述

我只需要充分理解它。如果任何人都可以帮助我按组描述这个正则表达式组,那么这对我会有很大的帮助。我理解某些部分,但不是全部。

^(?=.*[0-9])(?=.*[[email protected]#$%^&*])[[email protected]#$%^&*]{7,15}$ 
+0

显示的正则表达式不会做你说的那样。它还需要至少一个小写字母和一个大写字母。看看[正则表达式指南](https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions)并阅读关于lookahead的内容。 – nnnnnn

+0

有一个很酷的正则表达式测试网站:[regex101](https://regex101.com/r/vsNNwO/1)。你可以在右边看到'解释'。 – AlexM

+0

对不起,我更新了正则表达式。 – raju

回答

1

既然你更新的正则表达式...

^(?=.*[0-9])(?=.*[[email protected]#$%^&*])[[email protected]#$%^&*]{7,15}$

^(?=.*[0-9])从字符串的开始,匹配任何数字。如果没有任何匹配,前瞻?=将阻止正则表达式继续。

(?=.*[[email protected]#$%^&*])匹配组中的任何特殊字符。

[[email protected]#$%^&*]捕获所有字母,数字和特殊字符。至少7到15,直到线路结束。

+0

你是什么意思由“这并不证实有一个数字。“?它实际上是,不是吗? – AlexM

+0

'(?= ...)'是一个前瞻,而不是一个捕获组。 – nnnnnn

+0

这个正则表达式会检查特殊字符和数字的存在。我检查了我的JS代码。 – raju