正则表达式运用

904 阅读1分钟

直接看题吧:

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}$/

啥意思呢?开始后面不能跟只以字母结束;开始后面不能跟只以数字和小写字母结束;开始后面不能跟只以数字字母大写结束...

同样的还可以用?<!来写,有兴趣的动动手...