在为密码字段制定正则表达式时发出问题

时间:2013-08-13 13:20:42

标签: regex

我正在尝试为密码字段制定一个正则表达式,该字段至少接受一个特殊字符和一个字母数字字符。

我已经尝试过使用Rubular上的正则表达式((?=.*\d)(?=.*[a-zA-Z])(?=.*\W)),我已经熟了。但它运作不正常。

测试字符串:测试@ 123

请提出一种解决方法。

如果可以的话,请给出一些解释。

1 个答案:

答案 0 :(得分:3)

你的正则表达式实际上与你的测试字符串匹配。看起来你希望它在你的捕获组中,但是当你在括号中包装前瞻时。

在你的前瞻周围包裹一个捕捉小组不会捕捉任何东西,因为他们只是向前看来验证。你必须创建一个捕获组来捕获整个事物,如下所示:

^(?=.*\d)(?=.*[a-zA-Z])(?=.*\W)(.{6,20})$

^$只是检查传递的整个字符串。捕获组.中的()只是说要抓住整场比赛。 {6,20}表示它必须长度在6到20个字符之间。如果需要,您可以更改数字。

Rubular