RegExp类型
支持 正则表达式
var expression = / pattern / flags ;
pattern: 任何 简单或复杂的 正则表达式
- 字符类
- 限定符
- 分组
- 向前查找
- 反向引用
所有 元字符 都必须转义。元字符 一般都有 一种或多种 用途
//元字符有:
( [ { \ ^ $ | ) ? * + . ] }
flags: 标明 正则表达式 的行为
g: (global) 应用于所有字符串。而非 发现第一个匹配项时停止i: (case-insensitive) 不区分大小写m: (multiline) 达到一行文本末尾时 继续查找下一行 是否存在匹配项
示例: 以字面量的形式 定义 正则表达式
// 所有有"at"的字符串
var pattern1 = /at/g;
// 第一个有"bat"或"cat"的字符串, 不区分大小写
//var pattern1 = /[bc]at/i; 元字符需要转义
var pattern1 = /\[bc\]at/i;
// 所有 三个字符 并 以 "at"结尾 的字符串, 不区分大小写
//var pattern1 = /.at/gi; 元字符需要转义
var pattern1 = /\.at/gi;
RepExp 构造函数
接收两个参数:
- 要匹配的 字符串 模式
- 可以选择的 标志 字符串
以字面量定义的 任何正则表达式,都可以用构造函数来定义
// 第一个有"bat"或"cat"的字符串, 不区分大小写
//var pattern1 = /[bc]at/i; 元字符需要转义
var pattern1 = /\[bc\]at/i;
var pattern2 = new RegExp("[bc]at", "i");
构造函数接收的参数 都是 字符串
某些情况下 需要进行 双重转义
- 元字符 需要转义
- 元字符转义完毕后,如果还有
\, 那么也需要转义为\\
以字面量 定义的正在表达式,始终共享 同一个实例
以构造函数 定义的正则表达式,每一次都是 一个新实例
var re = null, i;
for(i = 0; i < 10; i++)
{
re = /cat/g; //实例属性不会重置
//第二次调用test()方法时,会失败,会找不到cat,会返回false
//第二次调用test()方法时,会从索引3(上次匹配的末尾)开始匹配
re.test("catastrophe");
}
for(i = 0; i < 10; i++)
{
re = new RegExp("cat", "g");
//每次调用test()方法,都会返回true
re.test("catastrophe");
}