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

标签: 函数 正则表达式 nodejs 搜索
15896人阅读 评论(1) 收藏 举报
分类:
记性不好的人,总是容易把记住的东西忘记掉!为了以后忘记的时候能够更快的找到并复习,最好还是做笔记!好记性不如赖笔头嘛!

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今天的笔记到此为止,有什么不对的地方,欢迎指正!
查看评论

Nodejs正则表达式

转载来源于:http://www.91xueke.com/2013/04/05/307.htm Nodejs正则表达式函数之match、test、exec、search、split、...
  • dc_show
  • dc_show
  • 2014-12-22 18:42:44
  • 3105

Node.js 正则表达式

正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 1. js 中,对于四种 零宽断言(匹配宽度为零,满足一定的条件/断言) ,只支持 零宽度正预测先行断言 和 零宽...
  • chy555chy
  • chy555chy
  • 2016-09-23 11:43:17
  • 802

nodejs 正则表达式

网址:http://www.vxueke.com/2013/04/05/307.htm
  • skywalker_prime
  • skywalker_prime
  • 2016-01-28 03:10:25
  • 1505

JS中给正则表达式加变量

一、字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = "string"; var a = [1,2]; var o...
  • icanlove
  • icanlove
  • 2014-09-23 16:02:51
  • 16602

nodejs的字符串操作模块

nodejs字符串操作简介需要引入querystring对象,querystring对象的方法有stringifyquerystring.stringify(“对象”,“分隔符”,“分配符”),将一个...
  • Vanhukseter
  • Vanhukseter
  • 2015-02-18 22:16:17
  • 27644

JS replace()方法替换变量(可以对变量进行全文替换)

事情是这样的: 本文出处http://blog.sina.com.cn/s/blog_6552200b0102ve60.html 我要用 JS 替换一个多行文本的关键字 正常,没有变...
  • yzbben
  • yzbben
  • 2016-12-05 17:47:49
  • 6012

js正则表达test、exec和match的区别

以前用js很少用到js的正则表达式,即使用到了,也是诸如邮件名称之类的判断,网上代码很多,很少有研究,拿来即用。 最近开发遇到一些需要使用正则表达式,顺便研究一下 正则表达式对象有两个...
  • z69183787
  • z69183787
  • 2014-01-05 17:06:57
  • 13131

node.js实现replaceall功能

举个例子,要把 aa/bb/cc/dd 转换成 aa_bb_cc_dd 形式。 1.循环遍历实现,利用js的split函数。 function urlPathToData(url_path){...
  • u013287846
  • u013287846
  • 2015-10-10 11:02:29
  • 2789

Node节点的添加、替换和删除

function addnode() {             var pnode = document.createElement('p');             var tnode = ...
  • gengyudan
  • gengyudan
  • 2013-04-15 20:45:12
  • 2923

JS判断字符串变量是否含有某个字串的方法

var Cts = "bblText";   if(Cts.indexOf("Text") > 0 ){     alert('Cts中包含Text字符串'); } indexOf用法: ...
  • jimoshuicao
  • jimoshuicao
  • 2015-03-29 21:32:07
  • 222479
    个人资料
    持之以恒
    等级:
    访问量: 40万+
    积分: 4792
    排名: 7523
    zt
    222
    最新评论