Javascript 用于自定义密码要求的正则表达式
我正试图根据密码要求创建一个正则表达式Javascript 用于自定义密码要求的正则表达式,javascript,regex,passwords,salesforce,Javascript,Regex,Passwords,Salesforce,我正试图根据密码要求创建一个正则表达式 至少八(8)个字符 至少一个数字(0-9) 以下任意三项: 小写的 大写字母 数 特殊字符(!“#$%&'()*+,-./:;?@[\]^{124;}~) 我创建了这个正则表达式 /^[0-9a-zA-Z\s!"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~]+$/g /^[0-9a-zA-Z\s!”\$\%&“\(\)\*\+\,\-\.\/\:;?@[\\\]\\\\\
- 至少八(8)个字符
- 至少一个数字(0-9)
- 以下任意三项:
- 小写的
- 大写字母
- 数
- 特殊字符(!“#$%&'()*+,-./:;<=>?@[\]^{124;}~)
/^[0-9a-zA-Z\s!"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~]+$/g
/^[0-9a-zA-Z\s!”\$\%&“\(\)\*\+\,\-\.\/\:;?@[\\\]\\\\\\\\\\\\\\\\\\]+$/g
我对正则表达式没有太多的了解,所以只需要确认它是正确的正则表达式还是需要更改。这个怎么样:
^(?=.{8,})(?=.*?\d)(?=.*[\s!\"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~])(?=[a-zA-Z0-9].*?[a-zA-Z0-9].*?[a-zA-Z0-9].*?).*$
(?=.{8,})(?=.*.\d)(?=.[\s!\“\$\%&'\(\)\*\+\,\-\.\/\:;?@[\\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]](?=[a-zA-Z0-9*$
如图所示
说明:
我用了很多正面的表情,你可以阅读更多
基本上,向前看可以确保某个位置前面有一些字符。在检查密码的开头是否符合您的所有条件后,我们将匹配密码。这样想:您确保所有内容都是正确的,如果是,则匹配密码。否则,您将不匹配
(?=.{8,})
检查是否至少有8个字符(?=.*?\d)
检查是否至少有一个数字^(?=.{8,})(?=.*.\d)(?=.[\s!\“\$\%&'\(\)\*\+\,\-\.\/\:;?@[\\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]])
检查是否至少有3个字母和/或数字如何:
^(?=.{8,})(?=.*?\d)(?=.*[\s!\"#$\%&'\(\)\*\+\,\-\.\/\:;<=>?@\[\\\]\^\_\`\{\|\}\~])(?=[a-zA-Z0-9].*?[a-zA-Z0-9].*?[a-zA-Z0-9].*?).*$
(?=.{8,})(?=.*.\d)(?=.[\s!\“\$\%&'\(\)\*\+\,\-\.\/\:;?@[\\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]](?=[a-zA-Z0-9*$
如图所示
说明:
我用了很多正面的表情,你可以阅读更多
基本上,向前看可以确保某个位置前面有一些字符。在检查密码的开头是否符合您的所有条件后,我们将匹配密码。这样想:您确保所有内容都是正确的,如果是,则匹配密码。否则,您将不匹配
(?=.{8,})
检查是否至少有8个字符(?=.*?\d)
检查是否至少有一个数字^(?=.{8,})(?=..*.\d)(?=.[\s!\“\$\%&'\(\)\*\+\,\-\.\/\:;?@[\\\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\]])
检查是否至少有3个字母和/或数字您可以尝试一下
^(?=.*\d)[ !"#$%&'()*+,.\/:;<=>?@[\]^`{|}~\w-]{8,}$
^(?=.*\d)[!“$%&'()*+,.\/:;?@[\]^`{124;}~\ w-]{8,}$
代码示例
const regex=/^(?=.*\d)[!“$%&'()*+,.\/:;?@[\]^`{124;}~\ w-]{8,}$/gm;
常量str=`1234
adnc
123456789
abcdefghij
ABCDEFGHIJ
1ABCDEFG
123-ANCNA
`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
}
您可以试试这个
^(?=.*\d)[ !"#$%&'()*+,.\/:;<=>?@[\]^`{|}~\w-]{8,}$
^(?=.*\d)[!“$%&'()*+,.\/:;?@[\]^`{124;}~\ w-]{8,}$
代码示例
const regex=/^(?=.*\d)[!“$%&'()*+,.\/:;?@[\]^`{124;}~\ w-]{8,}$/gm;
常量str=`1234
adnc
123456789
abcdefghij
ABCDEFGHIJ
1ABCDEFG
123-ANCNA
`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
}
如果我没有看错的话,您的正则表达式是^[long list of alternative]+$
。那么,在这种情况下,它也将匹配hello
。复杂的密码规则通常不会导致更安全的密码,重要的是只有最小长度。人们无法记住大量的强密码,这样的规则可能会干扰良好的密码方案。人们可以很有创意地绕过这些规则,例如使用“Password-2020”之类的弱密码。通常情况下,您的密码会变弱,而不是变强。NIST发布了一份反对此类规则及其以前建议的建议。如果我没有读错的话,您的正则表达式是^[备选方案长列表]+$
。那么,在这种情况下,它也将匹配hello
。复杂的密码规则通常不会导致更安全的密码,重要的是只有最小长度。人们无法记住大量的强密码,这样的规则可能会干扰良好的密码方案。人们可以很有创意地绕过这些规则,例如使用“Password-2020”之类的弱密码。通常情况下,您的密码会变弱,而不是变强。NIST发布了一份反对此类规则及其先前建议的建议。