ECMAScript通过regExp类型(引用类型)支持正则表达式。正则表达式用于匹配字符串中的字符组合。
一、创建正则表达式
字面量形式的正则表达式:
const expression = / pattern / flags;
RegExp构造函数:
let expression = new RegExp(pattern [, flags]); // 两个参数都是字符串
// ES6之后若第一个参数是一个正则表达式则使用参数创建一个新的正则表达式
let regex = new RexExp(/\w/) // /\w/
- 模式(pattern):任何简单或复杂的字符串,包含字符类、限定符、分组、向前查找和反向引用;
- 标志(flags):一个正则表达式可带有一个或多个标志,用以标明正则表达式的行为。包括g(全局)、i(不区分大小写)、m(多行)、u(Unicode)、y(粘性匹配)。
二、转义
元字符使正则表达式具有处理能力。
( ) [ ] { } \ ^ $ | ? * + .
模式中(匹配)包含的全部元字符需要转义;
构造函数中由于传递的参数是字符串需要(字符)转义;
构造函数中(匹配)所有元字符需要双重转义。
三、实例方法
exec()接受一个字符串参数,返回第一个匹配项信息的数组,没有匹配项时返回null。相比普通的Array实例多了两个属性:index,匹配项在字符串中的位置;input,应用正则表达式的字符串。数组第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。
test()接受一个字符串参数,模式与参数匹配返回true,反之返回false。
toLocaleString()和toString()返回正则表达式的字面量,与创建正则表达式的方式无关。
valueOf()返回正则表达式本身。
四、构造函数属性
RegExp构造函数包含的属性适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则操作而变化。这些属性分别有一个长属性名和短属性名。