定义: 规定字符串汇总,字符出现的规律。
何时: 1.用规则模糊查找多种关键词 2.验证字符串格式
1.最简单的规则,是关键词的原文
var a='今天又是阴天啊!';
var b=a.search(/阴天/); /阴天/为正则
console.log(b); //4
2.字符集
定义: 规定1位字符,备选字符列表的集合
何时: 只要字符串中有1位字符,有多重备选
如何使用:【备选字符列表】
注意:
- 不是数组,不加逗号。
- 无论备选字符列表有多少个字,一个字符集只能匹配1位字符!
- 当备选字符列表部分连续时,可以省略中间的字符。
常见:
- 一位数字 [0-9]
- 一位大小写字母 [a-z]
- 一位大写字母 [A-Z]
- 一位字母 [A-Za-z]
- 一位字母或数字 [0-9A-Za-z]
- 一个汉字 [\u4e00-\u9fa5]
var a='123abZ';
var b=a.replace(/[0-9]/,'数字');
console.log(b);//数字23abZ
3.预定义字符集:4个
- \d 一位数字[0-9]
- \w 一位字母,数字或下划线 [0-9A-Za-z_]
- \s 一个空字符: 空格 换行 Tab
- . 除换行外的任意字符
注:仅适用字符集,无法灵活定义字符的个数
var a='123abZ';
var b=a.replace(/\d/,'数字');
console.log(b); //数字23abZ
4.量词
定义: 专门规定一个字符集出现次数的规则;
何时: 只要固定一个字符集出现的次数,就用量词!
如何: 字符集量词
分类:
- 有明确数量限制:
字符集{m,n} 至少m,最多n
字符集{m,} 至少m,多了不限制
字符集{m} 必须m个,不能多也不能少 - 没有明确数量限制:
字符集? 可有可无,最多1个
字符集* 可有可无,数量不限
字符集+ 至少一个,多了不限
5.选择和分组
选择: 或 在多个规则中,匹配任意一个即可!
或: |
分组:( )
为什么: 量词,默认只修饰相邻的前一个字符集
何时: 如果希望量词修饰多个字符集时,就用分组
如何: (多个字符集)
6. 匹配特殊位置
何时: 只要匹配字符串特殊位置上的关键词时
包括: 开头^,结尾 $
比如:
- ^\s+ 开头的空字符
- \s+$ 结尾的空字符
- ^\s+|\s+$ 开头的和结尾的空字符
单词边界 \b: 包括 空格,标点…
何时: 只要匹配一个专门的单词时
7.RegExp
专门封装一条正则表达式,并使用正则表达式,执行验证和查找功能的对象
7.1 创建
var reg=/ 正则/ig //只要正则表达式是固定不变的
var reg=new RegExp("正则","ig") //如果正则表达式需要动态生成!
7.2 验证
**定义:**验证一个字符串的格式,是否符合正则表达式的要求
问题: 默认,正则表达式只要部分匹配,就返回true
解决: 只要验证,必须前加^,后加$,要求,从头到尾完整匹配
var a='今天是阴天,明天是晴天吗?'
var reg=/阴天/;
var bool=reg.test(a);
console.log(bool) //true
var d=1;
var c=d===1?'阴天':'晴天';
var e=new RegExp(c,'ig');
var boo12=e.test(a);
console.log( boo12) //true
7.3 查找
即找到每个关键词的内容,又找到每个关键词的位置
返回值:数组{0:”关键词内容”,index:本次找到关键词的位置};如果找不到,返回null
原理:
- 将本次找到的关键词,放入arr中0位置
- 将本次关键词的位置,放入arr中index位置将本次关键词的位置,放入arr中index位置
- 自动修改reg的lastIndex属性为当前位置+关键词长度自动修改reg的lastIndex属性为当前位置+关键词长度
var a='今天是阴天,明天是晴天吗?'
var reg=/阴天/;
var d=1;
var c=d===1?'阴天':'晴天';
var e=new RegExp(c,'ig');
var boo12=e.exec(a);
console.log( boo12)//[0:'阴天',index:3]