必须包含“数字”,“字母”,“特殊字符”两种以上的正则表达式

2024-11-25 09:26:16
推荐回答(3个)
回答1:

你说的是至少包含“数字”,“字母”,“特殊字符”中的两种吧
^(((?=.*[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].*)$
这个正则可以匹配有空格的字符串

回答2:

1.本来不想回答的 因为我也没有很好的解法,但是先回答的那个错了
2.这个正则里面的特殊字符只是~!@#$%^&*? 如果不够 自行添加 如果要匹配的文本不是独立的,此正则无效。 匹配的文本必须是一个独立的字符串,不能被包含。因为用到了^$表示字符串的开头和结尾。
正则为(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%\^&*?]+$
3.以经过测试, 能有效解决你的问题,但是不够简洁。如果有好的解决方案,请私信我,让我也学习下

回答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!@#$&_,.?]+$/;

不对可以私信我!