2013-07-09 56 views
1

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

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

而你的问题是......? –

+0

你刚刚从某处复制/粘贴该正则表达式吗? – Blender

+0

是的,特殊字符不会被执行。它只验证8-32个字符和至少一个数字,怎么样? – samsonasik

回答

3

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

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

你可以观看现场演示:http://jsfiddle.net/tuxrM/

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

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 
+0

它完美的作品,非常感谢你;) – samsonasik

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 

如果这是一个密码,做密码长度没有限制你的用户。

+0

我的老板问:D – samsonasik

相关问题