zoukankan      html  css  js  c++  java
  • 双引号替换单引号的小案例,引发的思考

    字符串的替换转换,一般大家都会想到字符串的替换replace方法正则表达式的结合。

    但是对于不了解的童鞋们,正则表达式仅仅在于使用,很难有人理解,我也不例外。

    通过一个小案例,我们一起探讨一下它们的奥秘!

    案例1:
    var name = '"0", "1"';
    var reg1 = /"([^"]*)"/g;
    name = name.replace(reg1, "'$1'");  //'', '1'
    console.log(name); //'0', '1'
    //此时$1代表的就是0或1
    
    

    1.replace定义和用法

    replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    案例1里面的$1代表正则第一个子表达式所匹配到的文本(以此类推:$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。),这里也就是0和1.

    于是这里就把正则匹配到的双引号”0“和”1“,用单引号‘0’和‘1’替换了,得到最终结果。

    案例2:
    var
    name2 = "Doe, John"; name.replace(/(w+)s*, s*(w+)/, "$2 $1"); console.log(name2)//John Doe

    从这个案例2可以清楚的看到,第一个括号和第二个括号所匹配的内容,依次用$1,$2代表,然后进行交换位置

    当然replace的第二个参数也可以是回调函数,也存在参数$1等,可自行打印查看(注意写在回调里面的参数,$1,$2......分别代表母体表达式匹配的结果,第一个子体,第二个子体,依次类推)。

    拿案例1来说;
    var name = '"0", "1"';
    name.replace(/"([^"]*)"/g, function($1, $2) {
            console.log($1, $2)//
        })
    //此时的$1代表的母体正则匹配到的”0“或”1“
    //$2才是第一个子体表达式匹配的0或1

    1.RegExp

    RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具

    说一下我比较容易混的量词

    n+ 匹配任何包含至少一个 n 的字符串。
    n* 匹配任何包含零个或多个 n 的字符串。
    n? 匹配任何包含零个或一个 n 的字符串。

    n+表示:有一个n,有多个n

    n*表示:没有n,有一个n,有多个n;

    n?表示:没有n,有一个n;

    这几个很像,这样分析不难看出n*的可能性最多,就一个案例分析一个特殊情况

    var name = '"", "1"';
    var reg1 = /"([^"]*)"/g;
    var reg2 = /"([^"]+)"/g;
    var reg3 = /"([^"]?)"/g;
    name = name.replace(reg1, "'$1'");  //'', '1'
    //name = name.replace(reg2, "'$1'"); //"', '1"
    //name = name.replace(reg3, "'$1'");  //'', '1'
    console.log(name); //'0', '1'

    虽然第一个和第三个结果一样,但明显存在和一个,更不能合适所有情况

    
    

    所有考虑全了,双引号里面的内容不存在,存在一个或存在多个才是我们全部的可能性存在,希望能够帮到你,虽然理解的不是很深,也很啰嗦,哈哈哈

     

     在来个案例提升一下;

    如何将浮点数左边的数每三位添加逗号

    //如1200000.11转成12,000,000.11
    result = num && num.toString().replace(/(d)(?=(d{3})+.)/g,function($1,$2){ return $2 + ','; })
  • 相关阅读:
    Python生成二维码
    SSO单点登录
    小说 · 凉生,我们可不可以不忧伤
    RabbitMQ入门教程——.NET客户端使用
    ASP.NET MVC 拓展ActionResult实现Html To Pdf 导出
    ASP.NET MVC 拓展ViewResult实现word文档下载
    RabbitMQ入门教程——安装及配置
    MongoDB学习笔记——分片(Sharding)
    MongoDB学习笔记——Replica Set副本集
    MongoDB学习笔记——Master/Slave主从复制
  • 原文地址:https://www.cnblogs.com/liliy-w/p/10107040.html
Copyright © 2011-2022 走看看