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

正则匹配字母、数字与字符组成的字符串,三者中每一种至少存在在一个,字母大小写均可,限制长度(本文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}$/

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值