js正则表达式必须包含数字、字母、特殊字符
js正则表达式要求:
1. 必须包含数字、英⽂字母、特殊符号且⼤于等于8位
2. 特殊符号包括: ~!@#$%^&*
正则表达式如下:
/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/
解释:
这⾥主要⽤到了js正则表式中的正向前瞻 ?=,举个例⼦
/\d/.exec( 'abc2abc' ) 匹配结果为2,释义:匹配⼀个数字
/\d(?=a)/.exec( 'abc2abc' ) 匹配结果为2,释义:匹配⼀个数字,但是这个数字后⾯必须跟着字母a
/\d(?=a)/.exec( 'abc2bc' ) 匹配结果为nulljs正则表达式判断数字
由此可以看出,?= 匹配结果中不包含它所匹配的字符,但是待匹配字符串必须符合它所对应的规则
当有多个正向前瞻规则时它们是并列的,不是串⾏的,⽐如
/\d(?=a)(?=b)/.exec( 'abc2abc' ) 匹配结果为null,那如果想匹配⼀个数字,后⾯必须跟着字母a和b可以这样写/\d(?=a)(?=.b)/.exec( 'abc2abc' ),当然这是为了演⽰它的规则,其实可以这样写/\d(?=ab)/.exec( 'abc2abc' )
对于/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/
其实整个正则表⽰可以分为三部分:
/^(?=.*\d)[\da-zA-Z~!@#$%^&*]{8,}$/
/^(?=.*[a-zA-Z])[\da-zA-Z~!@#$%^&*]{8,}$/
/^(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{8,}$/
待匹配字符串必须同时符合这三部分才可以
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论