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
网友评论