添加规则 rePassword 返回 /^(?![^A-Za-z]+$)(?![^0-9]+$)[\x21-x7e]{6,12}$/.test(element.value)
否则提示 '密码由6-16位数字、字符组成,不能为纯数字'
解析:
密码要求:由数字、字符组成,但是不能全部为数字
正则:
第一部分(?![^0-9]+$)不能为纯数字
第二部分[\x21-x7e]特殊字符字符
参考:http://www.cnblogs.com/China3S/archive/2013/11/30/3451971.html 深入理解正则表达式
http://www.runoob.com/regexp/regexp-syntax.html 菜鸟教程
正则表达式:
元字符:
\ 讲下一个字符转换为特殊字符
^ 开始位置
$ 结束位置
* 零次或以上
+ 一次或以上
?零次或一次
\d 数字
\D非数字
\s空格
\S非空白字符
\w字母数字下划线
\W非字母数字下划线
\b 匹配一个单词边界, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配一个单词非边界, 'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
限定符:
* + ? {n} {n,} {n,m}
定位符:
^ $ \b \B
遇到的问题:
我需要验证密码为非纯数字 第一部分开始写为(?![^0-9]+$),但是效果并不好,后来我更正为(?!^[0-9]+$)或者(?!^\d+$)两种写法都可以验证出密码全为数字的情况,于是我开始想 (?![^0-9]+$)和(?!^[0-9]+$)两种写法的区别.
首先我们一点一点看:
?! 匹配不符合后面规则的文本
(?!^[^0-9]+$) 表示字符串不能是除数字外的字符串
(?![^0-9]+$) 表示字符串不能是除数字外的字符串
?!^[0-9]+$) 表示字符串不能是全数字的字符串