正则表达式的模式匹配的常用String方法有五类:search()/replace()/match()/exec()/split()
下边将分别进行介绍:
search()
search()方法主要用于检测字符串中与正则表达式匹配的第一个子串,需要注意的是其不支持全局匹配,所以即使设置g标志也没用。
示例如下:"JavaScript".search(/script/i);
replace()
replace()用于替换匹配的字符串,支持两个参数:第一个为被替换的对象,第二个为替换的内容。
与search()不同,如果replace()的第一个参数为字符串而不是正则表达式,将会直接进行搜索而不需要像search()一样需要先将字符串通过RegExp()转为正则表达式test.replace(/javascript/gi, "JavaScript");
match()
match()最为常用,参数为正则表达式,返回值为匹配结果组成的数组。"I like bike".match(/\w+ike/g)//["like","bike"]
"I like bike very much".match(/(\w+)ike (very)/)//["bike very", "b", "very"]
在没有g标志的情况下,match()返回的数组第一个为匹配的子串,后边的参数为分组结果。此时,返回的数组还有index和input两个属性:分别用于表示匹配的起始位置和目标字符串(”I like bike very much.”)
补充
exec()
exec()与match()的使用有些区别:在非全局搜索时,两者返回结果一样;在全局模式下,exec()会返回匹配结果和分组的全部信息,而match()只会返回匹配结果。
在非全局模式下,exec()多次执行时会根据lastIndex值从上次匹配结束的下一个位置开始进行查找;
(/(\w+)ike (very)/g).exec("I like bike very much")//["bike very", "b", "very"]
- split()
var test = "hello world";
test.split(/o\s*/);
- lastIndex属性
通常只有RegExp对象的test()和exec()方法会用到该属性,而String()方法会将lastIndex置为0;