您将如何修改此正则表达式以仅允许使用字母和数字?

我认为通过必须至少包含2个大写字母,小写字母和数字,可以将表达式限制为仅这些类型的字符。但是它允许不需要的字符,例如波浪号等。

/^[\s]*((?=([^\s]*\d){2,})(?=([^\s]*[a-z]){2,})(?=([^\s]*[A-Z]){2,})[^\s]{8,16})[\s]*$/

最佳答案

这是使用几根针即可完成的方法。 fiddle

alert( verify('AbcdeFghij123') );
alert( verify('Abcdeghij123') ); // Only 1 capital
alert( verify('AbcdeFghij') ); // No numbers
alert( verify('ABCDEF123') ); // No lowercase
alert( verify('Abc~~ghij123') ); // Tilde
alert( verify('') ); // Blank

function verify(pass) {
    return /^[A-Za-z0-9]+$/.test(pass)
        && /[A-Z][^A-Z]*[A-Z]/.test(pass)
        && /[a-z][^a-z]*[a-z]/.test(pass)
        && /[0-9][^0-9]*[0-9]/.test(pass);
}


如果要将大小限制在X和Y之间,请用/^[A-Za-z0-9]+$/替换/^[A-Za-z0-9]{X,Y}$/。很简单,是吗?

关于javascript - 进一步修改密码的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8461090/

10-12 07:29