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.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']
原文地址:http://www.vxueke.com/2013/04/05/307.htm
转载时必须以链接形式注明原始出处及本声明。
Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解的更多相关文章
- Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量
Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程: 1.线程是一堆指令,是操作系统调度 ...
- Node.js之【正则表达式函数之match、test、exec、search、split、replace使用详解】
1. Match函数 使用指定的正则表达式函数对字符串惊醒查找,并以数组形式返回符合要求的字符串 原型:stringObj.match(regExp) 参数: stringObj 必选项,需要去进行匹 ...
- (转)Python内置函数进阶之“属性(property())”详解
原文:https://blog.csdn.net/GeekLeee/article/details/78519767 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.c ...
- 关于正则表达式中参数/g /m的详细分析和例子详解
总结1:参数/g的用法 表达式加上参数g之后,表明可以进行全局匹配,注意这里"可以"的含义.我们详细叙述: 1)对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行 ...
- 正则表达式中的.*?和python中re.S参数的详解
本章的内容主要是为讲解在正则表达式中常用的.*?和re.S! 在正则表达式中有贪婪匹配和最小匹配:如下为贪婪匹配(.*) import re match = re.search(r'PY.*', 'P ...
- Python开发环境Wing IDE之Search in Files工具详解
Search in Files工具是Wing IDE中最强大的搜索选项.它支持磁盘.项目,打开编辑器,或其它文件集的多文件批量搜索.它还可以使用通配符搜索,并可以做基于正则表达式的搜索/替换. 建议用 ...
- python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解
1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...
- SQLServer:探讨EXEC与sp_executesql的区别详解
摘要 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql;通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的 ...
- Exec msdb.dbo.sp_send_dbmail 参数详解(SQL Server 存储过程发邮件)
转载oriency755 发布于2012-12-04 11:34:45 阅读数 6870 收藏 sp_send_dbmail [ [ @profile_name = ] 'profile_name ...
随机推荐
- Bat脚本实现MySQL数据库SQL文件备份
@echo offecho 在线兑奖系统自动备份脚本(请勿关闭) 联系人: 电话::loopset /a "FDate=%date:~,4%%date:~5,2%%date:~8,2%&q ...
- struct和typedef struct
转自:http://www.cnblogs.com/qyaizs/articles/2039101.html struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++ ...
- Android入门开发之SD卡读写操作(转)
SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String sdCardRoot = Environment.getE ...
- 序列化 Serializable
1.序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object states,但 ...
- Hbase系统架构
HBase 系统架构 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问.HBase的目标是存储并处理大型的数据.HBase是一个开源的,分布式的,多版本的,面向列 ...
- JMeter监控Linux服务器资源案例
JMeter是一款压力测试工具,我们也可以用它来监控服务器资源使用情况.JMeter正常自带可以通过Tomcat的/manager/status来监控服务资源使用情况.这种情况只能监控Tomcat支持 ...
- asp.net项目中通过Web.config配置文件及文件夹的访问权限!
描述:在开发中我们通常会碰到这样的问题,例如:在项目的根目录下面有一个文件或者文件夹需要用户登陆后才能访问.如果用户在没有登录的情况下访问该文件或者该文件夹下面的文件时,直接拦截重定向到对应的登陆页面 ...
- js:方法2. 字符串
String.charAt()/String.charCodeAt() string.charAt(n); n:The index of the character that should be re ...
- vs2008/2010安装无法打开数据文件解决方案
本人在安装VS2008或2010时,在开始的第一个页面(进度条大约加载到75%左右),提示“无法打开数据文件 'C:/Documents and Settings/Administrator/Loca ...
- bug提交模板
简述所属版本所属模块严重等级优先级分配给[网络情况][前置条件][详情描述] 1. 2. 3.[预期结果][实际结果][历史版本][备注][是否补充用例] 另外: 1.若和界面有关的bug尽量提供对应 ...