验证字符串必须包含字母、数字、_
/^(?=.*\d+)(?=.*_+)(?=.*[A-Za-z]+)[\w]{6,16}$/
表示长度为6-16位同时包含:数字、字母 、 _
正则表达式
. 表示匹配除"\n"(换行符)和"\r"(回车符)以外的任何单个字符。
* 表示匹配前面的子表达式任意次。
() 表示将()的表达式定义为“组” ,而且将匹配这个表达式的字符保存到一个临时区域(一个正在表达式中最多能够保存9个),它们能够用 \1 至 \9 的符号来引用。
spa
另外这里主要用到了js正则表式中的正向前瞻 (?=),举个栗子字符串
/\d.exec(‘abc2abc’)/ 匹配结果为2,解释:匹配一个数字
/\d(?=a)/.exec(‘abc2abc’)/ 匹配结果为2,解释:匹配一个数字,可是这个数字后面必须跟着字母a
class
由此能够看出,(?=) 匹配结果中不包含它所匹配的字符,可是待匹配字符串必须符合它所对应的规则
当有多个前瞻规则时它们是并列的,不是串行的,好比
引用
/\d(?=a)(?=b)/.exec(“abc2bc”) 匹配结果为null,解释:匹配一个数字,这个数字后面必须跟着字母a和字母b,这确定是不可以成立的。di
/\d(?=a)(?=.b)/.exec(“abc2abc”) 匹配结果为2,解释:匹配一个数字,知足条件
①数字后面必须跟着数字a
②数字后面必须是包含一个任意字符后跟着b (.b)
co
因此**/^(?=.*\d+)(?=.*_+)(?=.*[A-Za-z]+)\w{6,16}$/**正则表达式就能够拆分红字符
/^(?=.*\d+)[\w]{6,16}$/ 解释:匹配属于\w而且任意字符事后必须跟着数字
/^(?=.*_+)[\w]{6,16}$/ 解释:匹配属于\w而且任意字符事后必须跟着_
/^(?=.*[A-Za-z]+)[\w]{6,16}$/ 解释:匹配属于\w而且任意字符事后必须跟着字母
数字
验证字符串必须包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
/^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).{6,16}$/ab
与上面的分析相同