js高级程序设计(正则表达式),总结:

1.RegExp类型

(1)正则表达式有三个标志,即i, m, g

  • i代表的是匹配字符时忽略字符的大小写
  • m代表的是匹配字符时进行多行搜索,即搜索完一行,会进入下一行继续进行搜索
  • g代表的是匹配字符时进行全局搜索

(2)创建正则表达式的方式有两种:

*使用字面量进行创建

var regExp = /[ab]c/i;  //字面创建

*通过RegExp构造函数创建

注意:通过RegExp构造函数创建时,它有两个参数,分别为匹配的字符串和正则标识符,里面传入的参数均为字符串形式,而且对于有些元字符在通过实例进行创建时要进行双重转义

var regExp = new RegExp('[ab]c', 'i');  //通过new关键字创建

// 对匹配的字符串进行双重转义
var regExp = /\.ad/ig;  //对以.ad结尾的字符串进行全局搜索并且忽略大小写
// 在创建实例中的写法如下
var newRegExp = new RegExp('\\.ad', 'ig');  //对字符串中的元字符进行双重转义

(3)在循环里进行匹配字符串时,会有两种不同的方式,即字面量和创建实例的方式。以字面量进行出创建时,在循环中只会创建一次正则实例,当第一次匹配到时,再进行循环,就会从上一次匹配到的字符串开始进行向下匹配。而在以创建实例方式进行匹配时,它会在循环里每次都创建一次实例,即每次都会从开始重新匹配。

 var re = null, i;
 for(i = 0; i < 10; i++) {
    re = /cat/g;
      re.test('catage');  //只会创建一次实例,每次循环都会从上一次的结尾继续匹配
 }
 for(i = 0; i < 10; i++) {
      re = new RegExp('cat', g);  //每一次循环都会重新创建一次新的实例
    re.test('catage');
 }
2.RegExp实例的方法
test exec
返回的是布尔值,一般用在输入域的验证规则中。参数是要匹配的字符串。 返回的是匹配到的第一个匹配项的数组,匹配不到时返回null。它的参数是要匹配的字符串,它有两个属性,即index和input。index是匹配项在字符串中的位置,input是应用正则表达式要匹配的字符串。在非全局模式下匹配到的永远都是第一项,不管调用几次exec()方法,在全局模式下,匹配到的永远只有一项,再次调用exec()方法时,才会匹配到下一项。

下面是延伸的方法,在其他资料上查的,让自己长点见识

3.match()方法

这个方法以前用过的次数很少,首先是它的写法和以上两种就不一样,它的参数是正则表达式,用的是匹配的字符串进行调用match()方法的。它返回的结果就是包含匹配项的数组。

 var str = "visit W3cschool  a W3cschool bull";
 var reg = new RegExp("W3cschool",'g');
 var res = str.match(reg);  //W3cschool, W3cschool
4.search()方法

第一次见这个方法,在其他资料上查了一下这个方法,做个总结,说不定在某些场景上就用到了。该方法不会执行全局匹配,即忽略正则标识符g,参数是正则表达式。它总是从字符串的第一个位置进行匹配,它的作用是:永远返回匹配到的第一个匹配项在字符串中的位置(索引从0开始),匹配不到返回-1,没错!和你的indexOf()方法返回的规则一样。

 var str = "Visit W3School!";
 document.write(str.search(/W3School/));  //6

 var str = "Visit W3School!";
 document.write(str.search(/w3School/));  //-1

 var str="Visit W3School!";
 document.write(str.search(/w3School/i));  //6
5.replace()方法

该方法用两个参数都是必需的,参数一是正则表达式,参数二是要将匹配到的字符串进行替换的字符串。这个方法会返回一个替换后的新的字符串。

 var str="Visit W3School!";
 var reg = /W3School/;
 document.write(str.replace(reg, 'newStr'));  //Visit newStr

你可能感兴趣的:(js高级程序设计(正则表达式),总结:)