正则表达式
一、声明有两种方式:
1、内置对象创建, 2、字面量创建
二、正则表达式的组成
由一些普通字符和元字符组成,普通字符就是字母和数字,元字符是具有特殊意义的字符
三、正则表达式五大内部类:(只要有一个字符满足条件,就是true)
(1)预定义类:(通配,数字字符,单词字符,空白字符)
(2)简单内部类
/sjdfi/ 必须是完整的包含指定字符,可以多,但不能少
/[suej]/ 只要满足中括号中的一个就可以
(3)负向类
/[^abc]/ 取反,^符号在[]中,用来检测的字符串数量不够或者刚刚好满足其中一个字符,返回false。超出规定数量或者没有一个与指定字符相符,就是满足条件,返回true.
(4)范围类
规定一个范围进行检测
[a-z] [A-Z] 只要检测的值一个满足给定范围,返回true
(5)组合类
[a-zA-Z0-9$%*] 多个判定条件组合在一起
四、正则边界
/^abc/ ^ 以给定字符开头 (注意:在[]中括号中是取反,不在中括号中是以什么开头)
/zfg$/ $ 以给定字符结尾,
^和$在一起使用,表示精确匹配,必须是这个[^abc$];
/^\\w/ 表示以字母,数字或者下划线开头的字符
/^\\w$/ 当有了前后的边界,只能匹配单个字符,要想匹配多个,就要用到量词。
五、正则量词(量词使用在前后都有边界的情况下,并且一个量词跟一个标准)
(1)* >=0 模板给定的字符可以出现一次或者多次,但不能出现其他字符
Var reg = /^a*$/; a可以出现0次或者多次,不能出现其他任何字符
/^abc*$/ 这种情况,可以出现多次c,但ab只能出现一次,且出现顺序是 abccc,不能调换。要想每个字符都可以出现多次,那么每个字符后面都要跟上量词,并且顺序也不能换
/^a*b+c?$/ aaabbbbc; true; abcabc; false;
(2)+ >=1 给定字符至少出现一次
/^a+$/
(3)? 0||1 给定字符出现0次或者1次
/^z?$/; z只能出现0次或者1次
/^\\w+$/; 可以出现多次同样的字母,数字,下划线
/^[abc]+$/; 可以多次出现[abc]中的任意一个字符,但不能超出abc这三个字符的范围
(4){} 大括号中的数字限定模板字符出现的个数
/^[abc]{2}$/; 可以出现模板中的任意两个字符
/^abc{2}$/; 规定必须完整的出现abc,并且c出现量词(一个量词跟一个标准,没有任何包裹的字母都可以看成一个判定标准,/abc/这种形式属于简单内部类)
(5){2,} 出现大于等于2次
/^\\w{3,}$/; 出现字母,数字,下划线的次数大于等于三次
/^ab{4,}c{2,}d$/ 必须以这个顺序依次出现,b的次数要大于等于4次,c的次数要大于等于2,d最后一次出现结尾。
(6){2,5} 出现2次到5次(包括)
/^[a-zA-Z]{2,5}$/ a-z,A-Z这个范围类的字符出现2-5次(大于等于2,小于等于5)
(7)| 只能用在简单内部类且不带任何包裹的判定添加上(可以加括号)
/^abc|def$/; 满足abc开头或者def结尾的都可以
六、正则实例
(1)匹配手机号 var reg = /^1[3458]\\d{9}$/.
(2)匹配固定电话 var reg = /^(0\\d{2}[\\-]\\d{8})|(0\\d{3}[\\-]\\d{7})$/;
满足0开头,中间两位是0-9之间的数字,第三位是-(需要转义字符转义,否则即使[范围连接符]),最后8位是0-9的数字
(3)匹配qq号 var reg = /^[1-9][0-9]{4,10}$/
(4)匹配邮箱(注意,特殊字符需要转义)
var reg = /^[\\w\\-\\.]+\\@[\\w]+\\.[\\w]{2,4}$/
参考资料: w3c 善知堂教育http://www.itszt.com/