正则表达式密码验证angularjs

时间:2017-04-12 10:39:15

标签: javascript angularjs regex

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

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);
}

1 个答案:

答案 0 :(得分:1)

请注意,您当前的正则表达式强制执行 4种类型的限制:

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

    如果您打算限制.并且仅允许用户从您的集中键入字符,请从中创建超集并将其与RegExp#test一起使用:

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

    请参阅regex demo