当前位置: 首页 > 知识库问答 >
问题:

密码正则表达式:“至少1个字母、1个数字、1个特殊字符,且不应以特殊字符开头”

公羊宇定
2023-03-14

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

要求是:

>

  • 密码长度必须为8到20个字符

    必须包含至少一个字母和一个数字以及来自! @#$%^的特殊字符

    不应该从一个特殊的角色开始

    我已经试过了

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

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

    非常感谢。


  • 共有1个答案

    佟云
    2023-03-14

    很简单,只需在开始时再添加一个角色类

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

    >

    [A-Za-z\d! @#$%^

    $将正则表达式锚定在字符串的末尾。确保有效密码后面没有任何内容

    正则表达式演示

    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#"));

     类似资料: