我正在尝试为密码字段制定一个正则表达式,该字段至少接受一个特殊字符和一个字母数字字符。
我已经尝试过使用Rubular上的正则表达式((?=.*\d)(?=.*[a-zA-Z])(?=.*\W))
,我已经熟了。但它运作不正常。
测试字符串:测试@ 123
请提出一种解决方法。
如果可以的话,请给出一些解释。
答案 0 :(得分:3)
你的正则表达式实际上与你的测试字符串匹配。看起来你希望它在你的捕获组中,但是当你在括号中包装前瞻时。
在你的前瞻周围包裹一个捕捉小组不会捕捉任何东西,因为他们只是向前看来验证。你必须创建一个捕获组来捕获整个事物,如下所示:
^(?=.*\d)(?=.*[a-zA-Z])(?=.*\W)(.{6,20})$
^
和$
只是检查传递的整个字符串。捕获组.
中的()
只是说要抓住整场比赛。 {6,20}
表示它必须长度在6到20个字符之间。如果需要,您可以更改数字。