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选项
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使用详解相关推荐
- nodejs正则提取html,Nodejs正则表达式函数之match、test、exec、search、split、replace
1. Match函数正则表达式 使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串数组 原型:stringObj.match(regExp)函数 参数:spa stringOb ...
- c++ regex 替换汉字_C++ - 正则表达式(regex) 替换(replace) 的 详解 及 代码
正则表达式(regex) 替换(replace) 的 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/1732163 ...
- pandas新字段(数据列)生成、使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战
pandas新字段(数据列)生成.使用np.where或者apply lambda函数结合if else生成新的字段,详解及实战 pandas apply用法: pandas apply方法的作用原理 ...
- java正则匹配多个斜杠_正则表达式中两个反斜杠的匹配规则详解
关于正则表达式raw的\匹配规则 这是我在学习中获得到的一个例子,第一表达式中匹配到的是none.于是乎我就在思考,为什么会匹配不到,假设\t被转义成一个\t,那么也应该匹配到\tsanle,而不是n ...
- docker exec执行多个命令详解
2019独角兽企业重金招聘Python工程师标准>>> docker exec执行多个命令详解 2018年04月23日 22:46:24 阅读数:6928 标签: dockercon ...
- ElasticSearch: Search API 查询用法详解
Search API ElasticSearch 为了搜索提供了一些原始的 API,主要是有两大类 URL Search URL Search 类似 http 的get请求,是将请求参数放到 URL ...
- python process 函数_Python Process创建进程的2种方法详解
前面介绍了使用 os.fork() 函数实现多进程编程,该方法最明显的缺陷就是不适用于 Windows 系统.本节将介绍一种支持 Python 在 Windows 平台上创建新进程的方法. Pytho ...
- linux getenv函数 get,linux之getenv putenv setenv和unsetenv详解
1.getenv函数 头文件:#include 函数原型: char * getenv(const char* name); 函数说明:getenv()用来取得参数name环境变量的内容. 函数参数: ...
- mysql exec call_exec和call用法详解
exec 和 call 用法详解 exec 和 call 执行一个procedure时, declare s_in varchar2(30):= ' where col=13 ' '; v_sql_s ...
最新文章
- spring Java相对路径/绝对路径总结
- python field readonly_Python serializers.ReadOnlyField方法代码示例
- OpenGL延迟着色之二
- Django模版(二)
- 【题意+解析】1041 Be Unique (20 分)_18行代码AC
- 迪普科技高端防火墙规模应用于海关总署 提供整网安全防护
- text-overflow: ellipsis; 文本溢出隐藏
- D. The Door Problem 带权并查集
- 各种池化操作(包括组合池化)
- ARM指令学习,王明学learn
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
- 数学之美 第二版 pdf
- 【AI安全】对抗样本之FGSM的代码实现(TensorFlow2)
- 前端工程师的摸鱼日常(15)
- Python之quote() unquote()使用
- 【分享帖】国内主流网络信息采集和页面数据抓取工具盘点
- html背景图片定位方法
- 工具相关累计 慢慢更新防止忘记
- HttpClient的使用教程
- elementui实现上传视频功能+预览
热门文章
- ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?
- c 连接mysql.mwb_CodeSmith连接mysql提示“找不到请求的 .Net Framework Data Provider”的解决方法...
- 51单片机auxr寄存器_MCS-51单片机有几个工作寄存器
- 文档词频矩阵_论文理解:从词嵌入到文档距离
- java soot_正确执行3个地址代码的SOOT API
- windows命令行无法启动redis_windows系统安装redis
- a频繁连接不上redis_连接不到redis Caused by:..._慕课问答
- 面向对象(方法的形式参数)
- 104. 二叉树的最大深度 golang
- 通过修改注册表,实现网页链接中的私有协议启用本地exe进程