javascript - 密码 : "Atleast 1 letter, 1 number, 1 special character and SHOULD NOT start with a special character" 的正则表达式

标签 javascript regex asp.net-mvc

我需要密码字段的正则表达式。

要求是:

  1. 密码长度必须在8到20个字符之间

  2. 必须包含至少一个字母一个数字以及来自!@#$%^&*() 的特殊字符_+

  3. 不应以特殊字符开头

我试过了

^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+]{8,20}

它可以工作,但是如何限制密码开头的特殊字符?另外,如果您有比上面提到的更有效的正则表达式,请提出建议。

谢谢

最佳答案

很简单,在开头多加一个字符类就可以了

^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d][A-Za-z\d!@#$%^&*()_+]{7,19}$
  • [A-Za-z\d] 确保第一个字符是字母或数字。

  • [A-Za-z\d!@#$%^&*()_+]{7,19} 将匹配最少 7 个最多 19 个字符。这是必需的,因为前面的字符类会消耗单个字符,从而使字符串中的字符总数最少为 8 个,最多为 20 个。

  • $ 将正则表达式锚定在字符串的末尾。确保我们的有效密码

  • 后面没有任何内容

Regex Demo

var pattern = new RegExp(/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d][A-Za-z\d!@#$%^&*()_+]{7,19}$/);

console.log(pattern.test("!@#123asdf!@#"));

console.log(pattern.test("123asdf!@#"));

console.log(pattern.test("12as#"));

关于javascript - 密码 : "Atleast 1 letter, 1 number, 1 special character and SHOULD NOT start with a special character" 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938415/

相关文章:

javascript - 提取多个片段时出现问题

c# - 将 IEnumerable 保存到数据库中

javascript - 如何使用tab键获取当前选中的<a>元素?

javascript - 将鼠标悬停在 SVG 路径上时,如何使 div 出现?

REGEX 用逗号分隔的唯一数字

Android - 电子邮件验证

c# - 无法加载资源,错误 404,使用 IIS Local 运行

c# - 在 MVC View 中使用 switch case

javascript - Bootstrap 关闭模态并显示另一个模态

javascript - 基于选择的路由器