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选项

6.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']

转载于:https://www.cnblogs.com/simadi/p/7091045.html

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

  1. nodejs正则提取html,Nodejs正则表达式函数之match、test、exec、search、split、replace

    1. Match函数正则表达式 使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串数组 原型:stringObj.match(regExp)函数 参数:spa stringOb ...

  2. c++ regex 替换汉字_C++ - 正则表达式(regex) 替换(replace) 的 详解 及 代码

    正则表达式(regex) 替换(replace) 的 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/1732163 ...

  3. pandas新字段(数据列)生成、使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战

    pandas新字段(数据列)生成.使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战 pandas apply用法: pandas apply方法的作用原理 ...

  4. java正则匹配多个斜杠_正则表达式中两个反斜杠的匹配规则详解

    关于正则表达式raw的\匹配规则 这是我在学习中获得到的一个例子,第一表达式中匹配到的是none.于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是n ...

  5. docker exec执行多个命令详解

    2019独角兽企业重金招聘Python工程师标准>>> docker exec执行多个命令详解 2018年04月23日 22:46:24 阅读数:6928 标签: dockercon ...

  6. ElasticSearch: Search API 查询用法详解

    Search API ElasticSearch 为了搜索提供了一些原始的 API,主要是有两大类 URL Search URL Search 类似 http 的get请求,是将请求参数放到 URL ...

  7. python process 函数_Python Process创建进程的2种方法详解

    前面介绍了使用 os.fork() 函数实现多进程编程,该方法最明显的缺陷就是不适用于 Windows 系统.本节将介绍一种支持 Python 在 Windows 平台上创建新进程的方法. Pytho ...

  8. linux getenv函数 get,linux之getenv putenv setenv和unsetenv详解

    1.getenv函数 头文件:#include 函数原型: char * getenv(const char* name); 函数说明:getenv()用来取得参数name环境变量的内容. 函数参数: ...

  9. mysql exec call_exec和call用法详解

    exec 和 call 用法详解 exec 和 call 执行一个procedure时, declare s_in varchar2(30):= ' where col=13 ' '; v_sql_s ...

最新文章

  1. spring Java相对路径/绝对路径总结
  2. python field readonly_Python serializers.ReadOnlyField方法代码示例
  3. OpenGL延迟着色之二
  4. Django模版(二)
  5. 【题意+解析】1041 Be Unique (20 分)_18行代码AC
  6. 迪普科技高端防火墙规模应用于海关总署 提供整网安全防护
  7. text-overflow: ellipsis; 文本溢出隐藏
  8. D. The Door Problem 带权并查集
  9. 各种池化操作(包括组合池化)
  10. ARM指令学习,王明学learn
  11. 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
  12. 数学之美 第二版 pdf
  13. 【AI安全】对抗样本之FGSM的代码实现(TensorFlow2)
  14. 前端工程师的摸鱼日常(15)
  15. Python之quote() unquote()使用
  16. 【分享帖】国内主流网络信息采集和页面数据抓取工具盘点
  17. html背景图片定位方法
  18. 工具相关累计 慢慢更新防止忘记
  19. HttpClient的使用教程
  20. elementui实现上传视频功能+预览

热门文章

  1. ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?
  2. c 连接mysql.mwb_CodeSmith连接mysql提示“找不到请求的 .Net Framework Data Provider”的解决方法...
  3. 51单片机auxr寄存器_MCS-51单片机有几个工作寄存器
  4. 文档词频矩阵_论文理解:从词嵌入到文档距离
  5. java soot_正确执行3个地址代码的SOOT API
  6. windows命令行无法启动redis_windows系统安装redis
  7. a频繁连接不上redis_连接不到redis Caused by:..._慕课问答
  8. 面向对象(方法的形式参数)
  9. 104. 二叉树的最大深度 golang
  10. 通过修改注册表,实现网页链接中的私有协议启用本地exe进程