一、介绍

在字符串中查找对应 模式 的字符 -> 也就是说在字符串中找到 满足条件 的字符

二、使用

创建方式

1. 正则表达式字面量

var 名称 = /正则表达式/正则表达式的修饰符;

2. 构造函数RegExp

var 名称 = new RegExp(‘正则表达式’,’正则表达式的修饰符’); 修饰符: i ignoreCase 忽略大小写 m multiline 多行匹配 g global 全局匹配 会维护lastIndex属性

  1. var pattern1 = /he/img;
  2. var pattern2 = new RegExp('he','img');
  3. console.log(pattern1); // /he/img
  4. console.log(pattern2); // /he/img

属性

1. RegExp.prototype.global

检测正则表达式中是否存在g修饰符,存在返回true

2. RegExp.prototype.multiline

检测正则表达式中是否存在m修饰符,存在返回true

3. RegExp.prototype.ignoreCase

检测正则表达式中是否存在i修饰符,存在返回true

4. RegExp.prototype.source

正则表达式的字符串形式

5. RegExp.prototype.flags

修饰符的字符串形式

6. RegExp.prototype.lastIndex

下次正则匹配的起始索引

  1. var pattern1 = /he/im;
  2. console.log(pattern1.source); // he
  3. console.log(pattern1.flags); // im

方法

1. RegExp.prototype.test()

  1. 用法: 检测字符串中是否存在满足条件的字符,如果存在,返回true
  2. 参数: 需要检测的字符串
  3. 返回值: truefalse

2. RegExp.prototype.exec()

  1. 用法: 检测字符串中是否存在满足条件的字符,如果存在,返回该字符
  2. 参数: 需要检测的字符串
  3. 返回值: 满足条件的字符组成的数组、null
  1. var str = 'hello regexp';
  2. var pattern = /he/img;
  3. var res = pattern.exec(str);
  4. console.log(res); // [ 'he', index: 0, input: 'hello regexp', groups: undefined ]
  1. var str = 'hello regexp';
  2. var pattern = /h e/img;
  3. var res = pattern.exec(str);
  4. console.log(res); // null

关于g修饰符对于lastIndex属性的影响:

  1. 如果在正则表达式中加了g修饰符,表示每次检查完字符串之后,都会维护一个lastIndex属性
  2. 如果在正则表达式中不加g修饰符,不会维护一个lastIndex属性,每次检查都从字符串的最左侧开始
  1. //加g修饰符:
  2. var str = 'hello js hello world';
  3. var pattern = /hello/img;
  4. var res1 = pattern.exec(str);
  5. console.log(res1); // ['hello']
  6. console.log(pattern.lastIndex); // 5
  7. var res2 = pattern.exec(str);
  8. console.log(res2); // ['hello']
  9. console.log(pattern.lastIndex); // 14
  10. var res3 = pattern.exec(str);
  11. console.log(res3); // ['hello']
  1. //不加g修饰符:
  2. var str = 'hello js hello world';
  3. var pattern = /hello/im;
  4. var res1 = pattern.exec(str);
  5. console.log(res1); // ['hello']
  6. console.log(pattern.lastIndex); // 0
  7. var res2 = pattern.exec(str);
  8. console.log(res2); // null
  9. console.log(pattern.lastIndex); // 0

需求: 找出字符串中所有满足条件的字符,放入一个数组

  1. var str = 'hello js hello world';
  2. var pattern = /hello/img;
  3. var res;
  4. var arr = [];
  5. // 操作代码
  6. console.log(arr); // ['hello','hello'] 最后结果