通过正则表达式匹配 用户名/密码/Email/身份证
- 用户名(4到16位,字母数字下划线,减号):
/^[-_a-zA-Z0-9]{4,16}$/
解释:在字符组中表示:匹配若干字符之一,这里就是匹配‘-’ , ‘_’ 和字母,数字其中之一,最后的{4,16}表示匹配4~16个字符组中的字符。
- Email:
/^[a-zA-Z0-9]{1,10}@[a-zA-Z0-9]{1,5}\.[a-zA-Z0-9]{1,5}$/
解释:此正则和用户名正则大同小异,就是在中间加了‘@’与元字符‘.’ 所以我们要在‘.’前进行转义,否则就代表匹配任意单个字符了。
- 身份证:
/^\d{17}(\d|x|X)$/
解释:\d表示匹配数字。身份证由17数字,第十八位可能为数字或者X字母。所以我们首先进行17位的数字匹配,再进行最后一位的匹配,**\d|x|X**就表示匹配数字或者‘x’或者'X'。
- 密码(最少6位,包括至少一位大写字母,一位小写字母,一个数字,一个特殊字符):
/(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[$@!%*#?&])[A-Za-z\d$@!%*#?&]{6,}$/
解释:
这里最先的 **(?=.*[A-Z])** 是正则表达式的环视,表示必须满足“在此位置后为 **.*[A-Z])**”才能匹配成功。意思是,匹配成功的表达式必须满足:存在大写字母。因为 **[A-Z]** 前为. \* 。所以字母前可以存在任何字符。
(注意:环视不消耗正则的匹配字符。)
一位小写字母,一个数字,一个特殊字符的匹配也是类似的。
最后的:[A-Za-z\d$@!%*#?&]{6,}与匹配用户名类似,但这里值得注意的是,因为环视不消耗正则的匹配字符,它就相当于一个判断,所以我们这里字符组中的字符必须包含:字母,数字,特殊字符,且匹配的数量应为6+而不是2+。