碎碎念:验证字符串--字母数字集合。

这篇打算八卦一点。从最简单的开始

 

一、验证一个字符串中必须是有字母数字组成的正则表达式

首先我们了解下/w,在不同的开发平台下他的含义是不同的。比如javascript中/w<==>[a-zA-Z0-9_]

而在c#中/w还包含了汉字等unicode编码字符

 

所以这个问题一定要排除使用/w

 

给出解决方案为:^[a-z0-9A-Z]+$

 

 

二、验证一个字符串中必须是由数字和字母组成,同时在6-15位

这个不废话了,直接给出解决方案吧,因为太啰嗦没意义

给出解决方案为:^[a-z0-9A-Z]{6,15}$

 

三、验证一个字符串中必须由数字和字母组成,同时在6-15位,并且必须是字母开头。

给出解决方案为:^[a-zA-Z][a-z0-9A-Z]{5,14}$

 

三、验证一个字符串中必须由数字和字母组成,同时在6-15位,并且必须有字母和数字。位置不固定

这个就比较有意思了,相对的。一个字符串中需要有字母和数字的话那么就不能全部是数字或者全部是字母。

用这个排除法的思路得到了一个答案

^(?![a-zA-Z]+$)(?![0-9]+$)[a-zA-Z0-9]{6,15}$

 

四、这个问题其实就是刚才才看到的问题

我现在给出这个答案。由于之间请教了逍遥大哥,才弥补了一个致命的缺陷。一开始我的写法是

^(?:(?![a-z][0-9]*[a-z])[a-z0-9]){6}$

意思是不存在一个2个字母,无论中间是否有数字,但是这样的排除法却忽视了一个字母都没有的情况

^(?!/d+$)(?:(?![a-z][0-9]*[a-z])[a-z0-9]){6}$

这里用到了2次环视,一个在里面一个在外面。看上去不是那么的直观。这里发一个逍遥大哥的解决方案出来。大家做个比较,用于理解环视

^(?!([^a-z]*[a-z]){2,})(?!/d+$)[/da-z]{6}$

这个问题的所有答案都是忽略大小写的前提的~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值