你说的是至少包含“数字”,“字母”,“特殊字符”中的两种吧
^(((?=.*[0-9])(?=.*[a-zA-Z])|(?=.*[0-9])(?=.*[^\s0-9a-zA-Z])|(?=.*[a-zA-Z])(?=.*[^\s0-9a-zA-Z]))[^\s]+)$
上面的正则表达式假设除了数字,字母,空白符外的字符都是特殊字符,这个正则不允许空白符,必须有“数字”,“字母”,“特殊字符”中的至少两种
如果是两种以上就是说三种字符都必须包含,正则是这样的
^(?i).+(?<=\d.*)(?<=[a-z].*)(?<=[^a-z\s\d].*)$
这个正则可以匹配有空格的字符串
1.本来不想回答的 因为我也没有很好的解法,但是先回答的那个错了
2.这个正则里面的特殊字符只是~!@#$%^&*? 如果不够 自行添加 如果要匹配的文本不是独立的,此正则无效。 匹配的文本必须是一个独立的字符串,不能被包含。因为用到了^$表示字符串的开头和结尾。
正则为(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%\^&*?]+$
3.以经过测试, 能有效解决你的问题,但是不够简洁。如果有好的解决方案,请私信我,让我也学习下
// 综合全匹配 限定8-16位
var ckAll = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,16}$/;
// 包含数字
var ckNum = /^(?=.*\d)[\da-zA-Z!@#$&_,.?]+$/;
// 包含英文
var ckEng = /^(?=.*[a-zA-Z])[\da-zA-Z!@#$&_,.?]+$/;
// 包含指定字符!@#$&_,.? 可自定义添加
var ckChar = /^(?=.*[!@#$&_,.?])[\da-zA-Z!@#$&_,.?]+$/;
不对可以私信我!