一、介绍
在字符串中查找对应 模式 的字符 -> 也就是说在字符串中找到 满足条件 的字符
二、使用
创建方式
1. 正则表达式字面量
var 名称 = /正则表达式/正则表达式的修饰符;
2. 构造函数RegExp
var 名称 = new RegExp(‘正则表达式’,’正则表达式的修饰符’); 修饰符: i ignoreCase 忽略大小写 m multiline 多行匹配 g global 全局匹配 会维护lastIndex属性
var pattern1 = /he/img;
var pattern2 = new RegExp('he','img');
console.log(pattern1); // /he/img
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
下次正则匹配的起始索引
var pattern1 = /he/im;
console.log(pattern1.source); // he
console.log(pattern1.flags); // im
方法
1. RegExp.prototype.test()
用法: 检测字符串中是否存在满足条件的字符,如果存在,返回true
参数: 需要检测的字符串
返回值: true、false
2. RegExp.prototype.exec()
用法: 检测字符串中是否存在满足条件的字符,如果存在,返回该字符
参数: 需要检测的字符串
返回值: 满足条件的字符组成的数组、null
var str = 'hello regexp';
var pattern = /he/img;
var res = pattern.exec(str);
console.log(res); // [ 'he', index: 0, input: 'hello regexp', groups: undefined ]
var str = 'hello regexp';
var pattern = /h e/img;
var res = pattern.exec(str);
console.log(res); // null
关于g修饰符对于lastIndex属性的影响:
- 如果在正则表达式中加了g修饰符,表示每次检查完字符串之后,都会维护一个lastIndex属性
- 如果在正则表达式中不加g修饰符,不会维护一个lastIndex属性,每次检查都从字符串的最左侧开始
//加g修饰符:
var str = 'hello js hello world';
var pattern = /hello/img;
var res1 = pattern.exec(str);
console.log(res1); // ['hello']
console.log(pattern.lastIndex); // 5
var res2 = pattern.exec(str);
console.log(res2); // ['hello']
console.log(pattern.lastIndex); // 14
var res3 = pattern.exec(str);
console.log(res3); // ['hello']
//不加g修饰符:
var str = 'hello js hello world';
var pattern = /hello/im;
var res1 = pattern.exec(str);
console.log(res1); // ['hello']
console.log(pattern.lastIndex); // 0
var res2 = pattern.exec(str);
console.log(res2); // null
console.log(pattern.lastIndex); // 0
需求: 找出字符串中所有满足条件的字符,放入一个数组
var str = 'hello js hello world';
var pattern = /hello/img;
var res;
var arr = [];
// 操作代码
console.log(arr); // ['hello','hello'] 最后结果