zoukankan      html  css  js  c++  java
  • javaScript高级教程(七)正则表达式中括号三种常见作用

     

    • 括号用来将子表达式标记起来,以区别于其他表达式

    比如很多的命令行程序都提供帮助命令,键入 h 和键入 help 的意义是一样的,那么就会有这样的表达式:

     h(elp)?

    字符h之后的elp可有可无这里的括号仅仅为了将 elp 自表达式与整个表达是隔离(因为 h 是必选的)。

     

    • 括号用来分组,当正则表达式执行完成之后,与之匹配的文本将会按照规则填入各个分组

    比如,某个数据库的主键是这样的格式:四个字符表示省份,然后是四个数字表示区号,然后是两位字符表示区县,

    如 yunn0871cg 表示云南省昆明市呈贡县,我们关心的是区号和区县的两位字符代码,怎么分离出来呢?

        var pattern = /w{4}(d{4})(w{2})/;
        var result = pattern.exec("yunn0871cg");
        console.log("city code = "+result[1]+", county code = "+result[2]);
    • 括号用来对引用起辅助作用,即在同一个表达式中,后边的式子可以引用前边匹配的文本

    我们来看一个非常常见的例子:我们在设计一个新的语言,这个语言中有字符串类型的数据,与其他的程序设计语言并无二致,比如:

        var str = "hello, world";
        var str = 'fair enough';

    均为合法字符,我们可能会设计出这样的表达式来匹配该声明:
      

      var pattern = /['"][^'"]*['"]/;

    看来没有什么问题,但是如果用户输入:
      

      var str = 'hello, world";
        var str = "hello, world';


    我们的正则表达式还是可以匹配,注意这两个字符串两侧的引号不匹配!我们需要的是,前边是单引号,则后边同样是单引号,反之亦然。

    因此,我们需要知道前边匹配的到底是“单”还是“双”。这里就需要用到引用,JavaScript 中的引用使用斜杠加数字来表示,

    如1 表示第一个分组(括号中的规则匹配的文本),2 表示第二个分组,以此类推。因此我们就设计出了这样的表达式:

      

    var pattern = /(['"])[^'"]*1/;


    在我们新设计的这个语言中,为了某种原因,在单引号中我们不允许出现双引号,同样,在双引号中也不允许出现单引号,我们可以稍作修改即可完成:
      

      var pattern = /(['"])[^1]*1/;
  • 相关阅读:
    sql server 的变量
    psycopg2 (python与postgresql)
    sublime text3 设置快速生成代码
    关于 Form 表单的 enctype 属性
    根据二进制流判断文件类型
    URL编码和Base64编码 (转)
    GZip 压缩及解压缩
    HttpWebRequest 请求 Api 及 异常处理
    c# BinaryWriter 和 BinaryReader
    JQ 上传文件(单个,多个,分片)
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/3278897.html
Copyright © 2011-2022 走看看