直接看题吧:
1. 编写一条正则验证字符串是否满足如下条件:6-16位,必须同时包含有大小写字母和数字
先分析一下6到16位字符串,很自然写出:
/^.{6,16}$/
必须同时包含大小字母和数字,可加上?=
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{6,16}$/
即开始后面任意个字符后带一个小写字母;开始后面任意个字符后面带一个大写;开始后面任意个字符后面带一个数字...
能不能用?<=来写呢,也是可以的
/^.{6,16}(?<=.*[a-z].*)(?<=.*[A-Z].*)(?<=.*\d.*)$/
解释一下:结束之前必须满足条件:任意个字符小写字母任意个字符;任意个字符带一个大写任意个字符;任意个字符带一个数字任意个字符。
2.修改一下上面的题目:6-16位字符串,只能是字母或者数字,且必须同时包含大小字母和数字。
除了第一题中的两种写法,还可以用前向负查找?!来写
/^(?![a-zA-Z]+$)(?![\da-z]+$)(?![\dA-Z]+$)[\da-zA-Z]{6,16}$/
啥意思呢?开始后面不能跟只以字母结束;开始后面不能跟只以数字和小写字母结束;开始后面不能跟只以数字字母大写结束...
同样的还可以用?<!来写,有兴趣的动动手...