2

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

我已经((?=.*\d)(?=.*[a-zA-Z])(?=.*\W))在 Rubular 上尝试过这个正则表达式,我做了。但它不能正常工作。

测试字符串: test@123

请提出一种方法来克服这个问题。

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

4

1 回答 1

3

您的正则表达式实际上与您的测试字符串匹配。似乎您希望它在您的捕获组中,尽管您将前瞻包裹在括号中。

将捕获组包裹在您的前瞻中不会捕获任何内容,因为它们只是在前瞻验证。您必须像这样创建一个捕获组来捕获整个事物:

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

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

红色的

于 2013-08-13T13:39:47.353 回答