正则表达式相关的JS方法

String.prototype

String.prototype.split

语法:str.split([separator[, limit]])

参数:separator支持正则

语法:str.search(regexp)

参数:一个正则对象

返回值:所给定字符串的第一个正则匹配项的index,没有匹配项则返回-1;直接忽略正则的g;

类似于 String.prototype.indexOf方法(也支持正则查询)

String.prototype.match

语法:str.match(regexp)

参数:一个正则对象,如果传的是其他类型,该类型会用new RegExp()转化成正则对象

返回值:有匹配项时返回数组,否则返回null

数组内容:

  • 全局匹配时没有捕获项,只有匹配项;
  • 非全局匹配数组第一项为匹配项,其他依次为捕获项;
  • 如果有嵌套捕获,先捕获外层再捕获内层。

String.prototype.replace

语法:str.replace(regexp|substr, newSubStr|function)

参数一:正则或字符串

参数二:

  • 新的字符串支持$的字符串($$、$&、$n)
  • 替换函数(指定参数包括match, p1, p2, p3, offset, string
  • match为匹配项,p1,p2,p3依次为捕获项,offset为匹配项在原字符串的index,string为原字符串;

RegExp.prototype

RegExp.prototype.exec

语法:regexObj.exec(str)

返回值:与String.prototype.match的返回值类似,有匹配项时返回数组,否则返回null

数组内容:

  • 不管是不是全局匹配,数组第一项为最后一个匹配项,其他依次为该匹配项的捕获项;
  • 全局匹配时从lastIndex(默认值为0)开始匹配,每次返回的值可能都不一样(循环);
  • 该数组还有两个属性index(匹配项在str中的index)和input(原字符串str);
  • 调用该方法后的regexObj多个属性值有更新:lastIndex(上次匹配项最后一个字符的index,全局匹配时下次调用将从lastIndex开始匹配)、ignoreCase(是否忽略大小写)、global(是否全局匹配)、multiline(是否多行匹配)、source(原字符串);

RegExp.prototype.test

语法:regexObj.test(str)

返回值:布尔值,是否有匹配项