Javascript 正则表达式密码验证angularjs

Javascript 正则表达式密码验证angularjs,javascript,angularjs,regex,Javascript,Angularjs,Regex,我是新手。我已经创建了一个登录屏幕。我需要验证我的密码。它应该包含一个来自-'$@!%*#?&'的特殊字符和至少一个字母和数字。到目前为止,它接受所有特殊字符,没有任何限制。我有以下代码 if (vm.newpassword_details.password.search("^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[$@£!%*#?&]).{8,}$")) { var msg = "Password should contain one special c

我是新手。我已经创建了一个登录屏幕。我需要验证我的密码。它应该包含一个来自
-'$@!%*#?&'的特殊字符和至少一个字母和数字。到目前为止,它接受所有特殊字符,没有任何限制。我有以下代码

if (vm.newpassword_details.password.search("^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[$@£!%*#?&]).{8,}$")) {
  var msg = "Password should contain one special character from -'$@£!%*#?&' and at least one letter and number";
  alert(msg);
}

请注意,您当前的正则表达式施加了4种类型的限制:

  • 至少一个ASCII字母(
    (?=.*A-Za-z])
  • 至少有一位数字(
    (?=.[0-9])
  • 集合中至少有一个特定字符(
    (?=.*?[$@!%*?&])
  • 整个字符串应至少有8个字符(
    {8,}
  • {8,}
    中的
    可以匹配除换行符以外的任何字符

    如果您计划限制
    ,只允许用户从您的集合中键入字符,请从它们创建一个超集,并将其与
    RegExp\test
    一起使用:

    if (!/^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[$@£!%*#?&])[A-Za-z0-9$@£!%*#?&]{8,}$/.test(vm.newpassword_details.password)) {  /* Error ! */  }
    

    请参见

    您的意思是要限制用户可用于密码的字符数吗?这不是最佳做法。您可以使用
    /^(?=.[A-Za-z])(?=.[0-9])(?=.[$@!%*.?&])[A-Za-z0-9$@!%*.*.?&]{8,}$/
    regex来实现它。