• JavaScript连载25-正则表达式的匹配分割替换以及贪婪模式


    一、test方法

        var dateStr = '2020-01-01';
        var dateReg = /^d{4}-d{2}-d{2}$/;
        console.log(dateReg.test(dateStr));//test方法用于验证是否是满足正则表达式格式

    运行结果:
    25.1

    二、提取正则表达式

    1. 正则对象.exec(要匹配的内容)

        var qqStr = "小明:15778945869,小虎:15678645678,小红:13848956123";
        var reg = /d+/g;
        do{
            var content = reg.exec(qqStr);//返回了一个数组,索引第一个值就是匹配的内容
            if(content){
                console.log(content[0]);
            }
        }while(content)
        //可以看出来content即使是在大括号的外面也依然可以使用

    运行结果:
    25.2

    2. 要匹配的内容.match(正则对象)

        var qqStr = "小明:15778945869,小虎:15678645678,小红:13848956123";
        var reg = /d+/g;
        var qqArr = qqStr.match(reg);
        console.log(qqArr);//返回一个匹配所有结果的列表

    运行结果:
    25.3

    3.分组匹配的结果

    • 使用RegExp.$数字来进行提取分组表达式
        var dateStr = '2020-01-01';
        dateReg2 = /^(d{4})-(d{2})-(d{2})$/;
        if(dateReg2.test(dateStr)){
            console.log(RegExp.$1);
            console.log(RegExp.$2);
            console.log(RegExp.$3);
        }

    显示结果:
    25.4

    4.替换

    • 要匹配的对象.replace(正则对象,新字符)
        var str2 = '              it  like   iy d ewd   dew   dd      ';
        console.log(str2.trim());//去除首尾空格
        //但是我们想要取代所有的空格,那就要用正则表达式了
        str3 = str2.replace(/s/g,'*');//加上g就是非贪婪
        str4 = str2.replace(/s/,"*");
        str5 = str2.replace(/s*$/,"*");
        console.log(str3);
        console.log(str4);
        console.log(str5);

    显示结果:
    25.5

    5.分隔

        var dateStr3 = "2020-11-12";
        console.log(dateStr3.split("-"));//返回一个分割的列表

    显示结果:
    25.6

    6.贪婪与非贪婪

    • 使用?即可实现
        var str6 = "aaaaaaaaabbbbbbbbbbbbbaaaaaaaaaaaa";
        var res = str6.match(/a.*b/);//默认是贪婪模式
        var res2 = str6.match(/a.*?b/)
        console.log(res);
        console.log(res2);

    显示结果: 25.7

    二、源码:

      • D25_MethodOfMatch.html
      • 地址:https://github.com/ruigege66/JavaScript/blob/master/D25_MethodOfMatch.html
      • 博客园:https://www.cnblogs.com/ruigege0000/
      • CSDN:https://blog.csdn.net/weixin_44630050?t=1
      • 欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流,后台回复“礼包”获取Java大数据学习视频礼包
        20.4
  • 相关阅读:
    PHP算法练习2:(175. 组合两个表)
    swoole(4)网络服务模型(多进程master-worker模型)
    swoole(3)网络服务模型(单进程阻塞、预派生子进程、单进程阻塞复用模型)
    swoole(2)swoole进程结构
    Shell glob
    NSInteger和BOOL的底层类型
    Mac OS X和iOS上基本数据类型的字节数
    LP64是什么意思
    Lenovo Y430P安装Linux无线网卡
    JavaScript中的原型继承原理
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13334149.html
Copyright © 2020-2023  润新知