-1

我正在尝试使用patern表单验证插件附带的扩展规则使用正则表达式验证密码。我已经尝试了许多来自互联网的表达方式,但到目前为止没有一个符合我的要求,或者由于某种原因,它们不能像描述的那样工作。我需要验证以下内容:

  1. 密码必须有 6 到 20 个字符
  2. 它必须至少包含一个大写字母
  3. 它必须包含至少一个数字
  4. 它必须至少包含一个小写字母
  5. 必须可以重复
  6. 字符的位置一定无关紧要
  7. 它不能允许空格
  8. 其中一部分的特殊字符应该是可选的

因此,用户应该能够输入以下示例:

  1. 啊啊啊1A
  2. 密码
  3. abCdef9
  4. $$$h1Tzzzz

我想在这里看看是否有人可以帮助我。我不是正则表达式专家。

4

3 回答 3

5

XKCD

您应该允许用户输入他们想要的任何密码。

无论如何,您的任务可能会更好地完成几个测试,一个接一个。这不仅更易于编程,还可以让您准确地告诉用户您不接受他们的密码的原因。

于 2013-01-18T01:50:42.610 回答
0

不要为此使用正则表达式。

您有一个检查列表:只需使用常规字符串函数进行检查。

于 2013-01-18T01:51:01.707 回答
0

虽然使用正则表达式应该考虑两次。您可以这样做:

var pattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=[\$!]).{6,26}$/;
var password = '$$$h1Tzzzz';
password.match(pattern);
//output
["$$$h1Tzzzz"]
password = '$$$hTzzzz';
password.match(pattern);
//output
null

您可以使用 \$ 和 ! 将特殊字符添加到括号中。'$' 被转义,因为它具有特殊含义。

于 2013-01-18T02:07:43.340 回答