正则匹配字母、数字与字符组成的字符串

正则匹配字母、数字与字符组成的字符串,三者中每一种至少存在在一个,字母大小写均可,限制长度(本文12到16位)。

 

在开发中因为需求需要,网上查阅了不少,自己也写了尝试,但是没有一个满足需求,最后通过网上的资料自己优化总结了一下,基本满足了需求。

 

正则表达式1:/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*~`\(\)_\-=+\\\|\}\]\[\{\'\"\;\:\/\?\>\.\<\,])[a-zA-Z\d!@#$%^&*~`\(\)_\-=+\\\|\}\]\[\{\'\"\;\:\/\?\>\.\<\,]{12,16}$/

其中最麻烦的就是特殊字符的处理,自己想用通配符来解决,但是没找到,只能如此处理,颇为麻烦,但基本包含了键盘上常用的除空格以外的特殊字符,整体下来就是:

/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[你所需的特殊字符])[a-zA-Z\d你所需的特殊字符]{最少位数,最大位数}$/;比如你所需的特殊字符为:“ !^@#¥%&*  ”,长度为8到20,那正则表达式就是/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[^@#¥%&*])[a-zA-Z\d^@#¥%&*]{8,20}$/;

 

另外也发现了另外一个正则表达式,虽然可以匹配字母、数字与字符组成的字符串,三者中每一种至少存在在一个且字母大小写均可这个原则,但是无法排除中文,全部当做了特殊字符来匹配,估计拉丁文什么的也当做特殊字符了,正则如下:

/^(?![^a-zA-Z]+$)(?!\D+$)(?![a-zA-Z0-9]+$).{12,16}$/

保险起见本人采用了第一个正则表达式。因为谁也不保证使用者不输入中文等其他字符。

你可能感兴趣的:(正则匹配字母、数字与字符组成的字符串)