正则表达式javascript最少8个字符,至少一个数字和一个特殊字符,最多32个字符

时间:2013-07-09 08:56:02

标签: javascript regex

我想要一个正则表达式,检查“最少8个字符,至少有一个数字和一个特殊字符,最多32个字符。” ,我的正则表达式是:

^(?=.*\d)(?=.*[a-zA-Z])[0-9a-zA-Z]{8,16}$

2 个答案:

答案 0 :(得分:3)

我测试这个正则表达式可以满意

/(?=^.{8,32}$)(?=(?:.*?\d){1})(?=.*[a-z])(?=(?:.*?[!@#$%*()_+^&}{:;?.]){1})(?!.*\s)[0-9a-zA-Z!@#$%*()_+^&]*$/

您可以观看直播演示:http://jsfiddle.net/tuxrM/

var re = new RegExp(/(?=^.{8,32}$)(?=(?:.*?\d){1})(?=.*[a-z])(?=(?:.*?[!@#$%*()_+^&}{:;?.]){1})(?!.*\s)[0-9a-zA-Z!@#$%*()_+^&]*$/);

var test1 = '1234567',      //  less than 8 characters
    test2 = 'aaaaaaaa',     //  no  number & no special character
    test3 = 'aaaaaaa1',     //  no special character
    test4 = 'aaaAaa#1',     //  satisfied
    test5 = 'abcdefghigklmnopqrstuvwxyz1234567890332123';  //  more than 32 characters

re.test(test1);     //  FALSE
re.test(test2);     //  FALSE
re.test(test3);     //  FALSE
re.test(test4);     //  TRUE
re.test(test5);     //  FALSE

答案 1 :(得分:2)

这实际上最好通过3种不同的正则表达式来解决。

/[0-9]/ //Check for at least one number.
/(SPECIAL CHARACTER)/ //Check for at least one special character. Please define "special" character.

然后

str.length >= 8 && str.length <= 32

如果这是密码,限制用户密码长度。