zoukankan      html  css  js  c++  java
  • JavaScript基础正则表达式的字面声明(012)

    不出所料,正则表达式也是JavaScript的一种对象。构造正则表达式也有两种,一种是使用JavaScript内置的 new RegExp() 构造函数,另一种是我们推荐的字面声明方式:

    // regular expression literal
    var re = /\/gm;
    
    // constructor
    var re = new RegExp("\\", "gm");
    

     可以看出字面声明法(Literal)更简洁,由于不必加引号,所以不用象构造函数里的参数那样需要用两个来表示斜杠。
    使用字面声明法来创建正则表达式时,后面的字母代表以下含义:

    • g—全局匹配
    • m—多行
    • i—大小写敏感

    匹配和模式(pattern)加上后面的设置字母就组成了正则表达式的字面声明:

    许多字符串的处理函数,如String.prototype.replace(),都接受正则表达式的字面声明作为参数:

    var no_letters = "abc123XYZ".replace(/[a-z]/gi, "");
    console.log(no_letters); // 123
    

     另外一个使用字面声明和构造函数生成正则表达式的区别是,当这个正则表达式对象被函数作为返回值时,字面声明总是保证相同的对象被返回,则构造函数返回的是内容相同的但个体不同的对象。考虑下面的代码:

    function getRE() {
    var re = /[a-z]/;
    re.foo = "bar";
    return re;
    }
    var reg = getRE(),
    re2 = getRE();
    
    console.log(reg === re2); // true
    reg.foo = "baz";
    console.log(re2.foo); // "baz"
    

     如果把var re = /[a-z]/;这里换作new RegExp(),那么console.log(reg === re2);将返回false。

  • 相关阅读:
    EasyUI问题小结(不定期更新·······)
    windows服务与前台交互
    C#捕获Windows窗体控件
    C#操作AD域中计算机
    远程桌面 Rdp文件的生成
    正则匹配的例子
    Nodejs中npm install 命令的问题
    Windows下使用curl命令
    关于PostmanURL中不能传递中文的问题
    MyBatis_Study_004(动态代理)
  • 原文地址:https://www.cnblogs.com/Bryran/p/3969131.html
Copyright © 2011-2022 走看看