牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2017-04-11 投稿人: 浏览次数:149

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


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


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

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

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


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

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

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。