zoukankan      html  css  js  c++  java
  • 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']
  • 相关阅读:
    【JAVA笔记——道】JAVA对象销毁
    【JAVA笔记——道】并发编程CAS算法
    httpClientUtil的get请求
    python基础 day11 下 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业
    python基础 day11 上 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 事务 索引 python 操作mysql ORM sqlachemy学习
    Python基础 Day10 Gevent协程 SelectPollEpoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitMQ队列 RedisMemcached缓存 Paramiko SSH Twsited网络框架
    python基础 day9 进程、与线程区别 python GIL全局解释器锁 线程 进程
    python基础 day8 Socket语法及相关 SocketServer实现多并发
    python基础 day7 面向对象高级语法部分 异常处理 异常处理 Socket开发基础
    python基础 day6 面向对象的特性:封装、继承、多态 类、方法、
  • 原文地址:https://www.cnblogs.com/simadi/p/7091045.html
Copyright © 2011-2022 走看看