首页 > 代码库 > Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解

Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解

记性不好的人,总是容易把记住的东西忘记掉!为了以后忘记的时候能够更快的找到并复习,最好还是做笔记!好记性不如赖笔头嘛!

 

1. Match函数

 

使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串

 

原型:stringObj.match(regExp)

 

参数:

 

stringObj 必选项,需要去进行匹配的字符串

RegExp  必选项,指定的正则表达式

返回值:如果没有使用g(全局匹配)选项,则返回第一个匹配的字符串、该字符串所在位置及原始字符串组成的数组,如果使用g选项,则返回所有匹配的字符串组成的数组

 

  示例1:   

  var str = “aaabbbcccaaabbbccc”;   

  var res = str.match(/aaa/); //没有使用g选项   

  console.log(res); //输出[ ‘aaa‘, index: 0, input: ‘aaabbbcccaaabbbccc‘ ] 第一个表示匹配的字符串;第二个表示匹配的字符串坐在的索引位置,从0开始计算;第三个表示原始字符串;   

  示例2:   

  var str = “aaabbbcccaaabbbccc”;   

  var res = str.match(/aaa/g); //使用g选项,全局匹配   

  console.log(res); //输出[ ‘aaa‘, ‘aaa‘ ] 所有匹配的字符串组成的数组  

 

 

2.exec函数

 

使用指定的正则表达式模式去字符串中查找匹配项,并以数组形式返回,如果未查找到则返回null

 

原型:regExp.exec(stringObj)

 

参数:

 

regExp 必选项,表示指定的正则表达式模式

stringObj 必选项,表示需要查找的字符串

返回值:无论有无g选项,都返回第一个匹配的字符串、该字符串所在位置及原始字符串组成的数组,但是该方法可以返回子匹配项,是match所不能及的

 

  示例1:   

  var str = “aaabbbcccaaabbbccc”;   

  var regExp = /aaa/; //未使用g选项   

  var res = regExp .exec(str);    

  console.log(res); //输出[ ‘aaa‘, index: 0, input: ‘aaabbbcccaaabbbccc‘ ]   

  示例2:   

  var str = “aaabbbcccaaabbbccc”;   

  var regExp = /aaa/g; //使用g选项   

  var res = regExp .exec(str);    

  console.log(res); //输出[ ‘aaa‘, index: 0, input: ‘aaabbbcccaaabbbccc‘ ]   

  示例3:   

  var str = “aaabbbccc1234aaabbbccc”;   

  var regExp = /ccc([0-9]+)aaa/;   

  var res = regExp .exec(str);    

  console.log(res); //输出[ ‘ccc1234aaa‘, ‘1234‘, index: 6, input: ‘aaabbbccc1234aaabbbccc‘ ] 第一个表示整个正则表达式所匹配的内容;第二个表示()内容的子表达式所匹配的内容;第三个和第四个同上   

  示例4:   

  var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;   

  var reg = /ccc([0-9]+)aaa/;   

  var res = reg.exec(str);   

  console.log(res); //输出同示例三,因为exec只返回第一个匹配的字符串,如果想全部返回,则需要借助while循环和g参数来实现,如下   

  var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;   

  var reg = /ccc([0-9]+)aaa/g;   

  while(res = reg.exec(str)){   

    console.log(res);   

  }   

  //输出如下:   

[ ‘ccc1234aaa‘, ‘1234‘, index: 6, input: ‘aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc‘ ][ ‘ccc5678aaa‘, ‘5678‘, index: 28, input: ‘aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc‘ ]   

//使用这个方法时切记加上g选项,否则while循环将无法跳出,每次都循环第一个匹配项,导致死循环,可能卡死!  

 

 

3.test函数

 

原型:regExp.test(str)

 

参数:regExp表示正则表达式模式  stringObj表示需要进行匹配的字符串

 

返回值:布尔类型,匹配则返回true,否则false

 

  示例1:   

  var str = “aaabbbcccaaabbbccc”;   

  var reg = /[a-z]+/;   

  var res = reg.test(str);   

  console.log(res); //输出true   

  示例2:   

  var str = “aaabbbcccaaabbbccc”;   

  var reg = /[0-9]+/;   

  var res = reg.test(str);   

  console.log(res); //输出false   

  //该函数一般用来检测某字符串是否符合指定的规则  

4.search函数

 

原型:stringObj.search(regExp)

 

参数:regExp表示正则表达式模式  stringObj表示需要进行匹配的字符串

 

返回值:返回第一个匹配的字符串所在的位置(偏移量),从0开始

 

  示例1:   

  var str = “aaabbbcccaaabbbccc”;   

  var reg = /ccc/;   

  var res = str.search(reg);   

  console.log(res); //输出 6  

 

 

5.replace函数

 

原型:stringObj.replace(regExp, replaceText)

 

参数:regExp表示正则表达式模式,stringObj表示需要进行匹配的字符串,replaceText表示替换成该文本内容,replaceText也可以是返回字符串的一个函数

 

返回值:返回替换之后的字符串

 

  示例1:   

  var str = “aaabbbcccaaabbbccc”;   

  var reg = /aaa/;   

  var res = str.replace(reg, ’111′);   

  console.log(res);//返回111bbbcccaaabbbccc ,只替换第一个匹配项,若需要替换所有则需要使用g选项  

5.split函数

 

原型:stringObj.split([separator[, limit]])

 

参数:separator表示分隔符(此处也可以是正则表达式),stringObj表示需要进行匹配的字符串,limit用来限制返回数组元素的个数

 

返回值:返回分割后的数组

 

  示例1:   

  var str = “aaa,bbb,ccc”;   

  var reg = /,/;   

  var res = str.split(reg);   

  console.log(res); //输出[ ‘aaa‘, ‘bbb‘, ‘ccc‘ ]   

  //其实这里可以简单的写为var res = str.split(“,”);   

  示例2:   

  var str = “aaa,bbb:ccc@ddd#eee”;   

  var reg = /[,:@#]/;   

  var res = str.split(reg);   

  console.log(res); //输出[ ‘aaa‘, ‘bbb‘, ‘ccc‘, ‘ddd‘, ‘eee‘ ] 这才是用正则的强大之处   

  示例3.   

  var str = “aaa,bbb:ccc@ddd#eee”;   

  var reg = /[,:@#]/;   

  var res = str.split(reg, 3);   

  console.log(res); //输出[ ‘aaa‘, ‘bbb‘, ‘ccc‘]  

Ok今天的笔记到此为止,有什么不对的地方,欢迎指正!

记性不好的人,总是容易把记住的东西忘记掉!为了以后忘记的时候能够更快的找到并复习,最好还是做笔记!好记性不如赖笔头嘛!1. Match函数使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串原型:stringObj.match(regExp)参数:stringObj 必选项,需要去进行匹配的字符串RegExp 必选项,指定的正则表达式返回值:如果没有使用g(全局匹配)选项,则返回第一个匹配的字符串、该字符串所在位置及原始字符串组成的数组,如果使用g选项,则返回所有匹配的字符串组成的数组  示例1:   var str = “aaabbbcccaaabbbccc”;   var res = str.match(/aaa/); //没有使用g选项   console.log(res); //输出[ ‘aaa‘, index: 0, input: ‘aaabbbcccaaabbbccc‘ ] 第一个表示匹配的字符串;第二个表示匹配的字符串坐在的索引位置,从0开始计算;第三个表示原始字符串;   示例2:   var str = “aaabbbcccaaabbbccc”;   var res = str.match(/aaa/g); //使用g选项,全局匹配   console.log(res); //输出[ ‘aaa‘, ‘aaa‘ ] 所有匹配的字符串组成的数组 2.exec函数使用指定的正则表达式模式去字符串中查找匹配项,并以数组形式返回,如果未查找到则返回null原型:regExp.exec(stringObj)参数:regExp 必选项,表示指定的正则表达式模式stringObj 必选项,表示需要查找的字符串返回值:无论有无g选项,都返回第一个匹配的字符串、该字符串所在位置及原始字符串组成的数组,但是该方法可以返回子匹配项,是match所不能及的  示例1:   var str = “aaabbbcccaaabbbccc”;   var regExp = /aaa/; //未使用g选项   var res = regExp .exec(str);   console.log(res); //输出[ ‘aaa‘, index: 0, input: ‘aaabbbcccaaabbbccc‘ ]   示例2:   var str = “aaabbbcccaaabbbccc”;   var regExp = /aaa/g; //使用g选项   var res = regExp .exec(str);   console.log(res); //输出[ ‘aaa‘, index: 0, input: ‘aaabbbcccaaabbbccc‘ ]   示例3:   var str = “aaabbbccc1234aaabbbccc”;   var regExp = /ccc([0-9]+)aaa/;   var res = regExp .exec(str);   console.log(res); //输出[ ‘ccc1234aaa‘, ‘1234‘, index: 6, input: ‘aaabbbccc1234aaabbbccc‘ ] 第一个表示整个正则表达式所匹配的内容;第二个表示()内容的子表达式所匹配的内容;第三个和第四个同上   示例4:   var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;   var reg = /ccc([0-9]+)aaa/;   var res = reg.exec(str);   console.log(res); //输出同示例三,因为exec只返回第一个匹配的字符串,如果想全部返回,则需要借助while循环和g参数来实现,如下   var str = “aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc”;   var reg = /ccc([0-9]+)aaa/g;   while(res = reg.exec(str)){    console.log(res);   }   //输出如下: [ ‘ccc1234aaa‘, ‘1234‘, index: 6, input: ‘aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc‘ ][ ‘ccc5678aaa‘, ‘5678‘, index: 28, input: ‘aaabbbccc1234aaabbbcccaaabbbccc5678aaabbbccc‘ ] //使用这个方法时切记加上g选项,否则while循环将无法跳出,每次都循环第一个匹配项,导致死循环,可能卡死! 3.test函数原型:regExp.test(str)参数:regExp表示正则表达式模式 stringObj表示需要进行匹配的字符串返回值:布尔类型,匹配则返回true,否则false  示例1:   var str = “aaabbbcccaaabbbccc”;   var reg = /[a-z]+/;   var res = reg.test(str);   console.log(res); //输出true   示例2:   var str = “aaabbbcccaaabbbccc”;   var reg = /[0-9]+/;   var res = reg.test(str);   console.log(res); //输出false   //该函数一般用来检测某字符串是否符合指定的规则 4.search函数原型:stringObj.search(regExp)参数:regExp表示正则表达式模式 stringObj表示需要进行匹配的字符串返回值:返回第一个匹配的字符串所在的位置(偏移量),从0开始  示例1:   var str = “aaabbbcccaaabbbccc”;   var reg = /ccc/;   var res = str.search(reg);   console.log(res); //输出 65.replace函数原型:stringObj.replace(regExp, replaceText)参数:regExp表示正则表达式模式,stringObj表示需要进行匹配的字符串,replaceText表示替换成该文本内容,replaceText也可以是返回字符串的一个函数返回值:返回替换之后的字符串  示例1:   var str = “aaabbbcccaaabbbccc”;   var reg = /aaa/;   var res = str.replace(reg, ’111′);   console.log(res);//返回111bbbcccaaabbbccc ,只替换第一个匹配项,若需要替换所有则需要使用g选项 5.split函数原型:stringObj.split([separator[, limit]])参数:separator表示分隔符(此处也可以是正则表达式),stringObj表示需要进行匹配的字符串,limit用来限制返回数组元素的个数返回值:返回分割后的数组  示例1:   var str = “aaa,bbb,ccc”;   var reg = /,/;   var res = str.split(reg);   console.log(res); //输出[ ‘aaa‘, ‘bbb‘, ‘ccc‘ ]   //其实这里可以简单的写为var res = str.split(“,”);   示例2:   var str = “aaa,bbb:ccc@ddd#eee”;   var reg = /[,:@#]/;   var res = str.split(reg);   console.log(res); //输出[ ‘aaa‘, ‘bbb‘, ‘ccc‘, ‘ddd‘, ‘eee‘ ] 这才是用正则的强大之处   示例3.   var str = “aaa,bbb:ccc@ddd#eee”;   var reg = /[,:@#]/;   var res = str.split(reg, 3);   console.log(res); //输出[ ‘aaa‘, ‘bbb‘, ‘ccc‘] Ok今天的笔记到此为止,有什么不对的地方,欢迎指正!

Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解