1、定义
RegExp对象是原生JavaScript中表示正则表达式的对象;是正则表达式(regular expression)的简写。有一点需要明确知道,正则表达式只能对字符串进行操作。
2、语法
两种语法方式,一是新建RegExp对象,另一个直接创建
语法一:var patt=new RegExp(pattern,attributes); 语法二:var patt=/pattern/attributes;
示例: var re = new RegExp("\\w+"); var re = /\w+/; 注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。以上是等价的。
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。
3、修饰符
“修饰符” 其含义类似于正则实例的附加属性。用于说明正则规则适用匹配的范围。
i : 表示区分大小写字母匹配。
m :表示多行匹配。
g : 表示全局匹配。
在非全局的情况下,正则会根据指定的“规则”从左至右对字符串进行匹配,一旦规则匹配完,便会停止匹配操作,返回结果。
在全局的的情况下,正则会根据指定的“规则”从左至右对字符串进行匹配,一旦规则匹配完,便会在当前字符串匹配位置
重新使用“规则”继续向下匹配,一直到字符串匹配完成。这也是下文中,我们会提到lastIndex属性存在的必要性。
i,g,m三个修饰符可以相互组合同时使用
4、RegExp对象方法
RegExp 对象有 3 个方法:test()、exec() 以及 compile()。
(1)、test( )
test()方法检索字符串中的指定值。返回值是true或false。
1 var patt1=new RegExp("e"); 2 document.write(patt1.test("The best things in life are free"));
由于该字符串中存在字母 "e",以上代码的输出将是:true
(2)、exec( )
exec()方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回null
1 var patt1=new RegExp("e"); 2 document.write(patt1.exec("The best things in life are free"));
由于该字符串中存在字母 "e",以上代码的输出将是:e
(3)、compile()
compile可以重新指定正则实例的规则与修饰符。
1 var pattern = /e/i; 2 pattern.compile(\'a\',\'g\')
规则由大小写检查e变为全局搜索a
5、参考
【1】 JavaScript RegExp 正则表达式基础详谈
【2】简单教程