正则表达式之RegExp对象

时间:2024-02-23 07:20:12

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】简单教程