• 正则表达式


    1、三张图稍微了解一下正则,正则属性的备忘

      ps:需要转移的的字符( )----   () [] {} / ? + * . ^ $ |  =

    2、正则实例属性,方法

          // RegExp实例方法
              var pattern = new RegExp("[bc]at",'i') === /[bc]at/i
              var text = 'asdfasdf asdf asdf asdf asdf '; 
          // 1-exec() //捕获组()  
             //此方法跟String.match(/pattern)类似,但是返回的数组不一样,
             //match返回匹配整个正则的项(一维数组)
             //exec(),返回二维数组,[0][0]为匹配整个正则的项,[0][1+]匹配子捕获组的子项
              var pattern = /mom ( and dad ( and bady)?)?/gi   //---包含2个捕获组,捕获组内嵌
              var matches = pattern.exec(text);
                matches.index;  //  匹配到的index
                matches.input;  //  匹配的字符串
                //数组长度要看你捕获组的个数
                matches[0];     //mom and dad and bady  
                matches[1];     //and dad and bady
                matches[2]      //and bady
                
            // 2-text()
              var result = pattern.test(text);//返回false,true,判断是否有匹配的
            // 3-compile() //这个以后用到再回来看,需求好像不大

    3、正则的实际应用

      (a) 这篇文章出现的导火线,输入法的表情emoji保存数据库出错,需求是过滤所有的emoji,

      网上说emoji是":smile:"双冒号这种reg = /:([^:]+):/g;,

                     解读: : 冒号开始     [^:]+ 非冒号的字符 + 表示1个或多个   : 其后再加一个冒号    /g全局匹配 

      但是实践中确实Unicode编码 这种4个字节的reg = /uD83C[uDF00-uDFFF]|uD83D[uDC00-uDE4F]/g;

                         解读:   uD83CuDF00-uD83CuDFFF  | (或)      uD83DuDC00-uD83DuDE4F

    1       $scope.$watch('text', function(newValue, oldValue, scope) {
    2         $scope.text2 = $scope.text.replace(/uD83C[uDF00-uDFFF]|uD83D[uDC00-uDE4F]/g, "");
    3       }, false);

      (b)解析url

     1  var parse_url = /^(?:([A-Za-z]+):)?(/{0,3})([0-9.-A-Za-z]+)(?::(d+))?(?:/([^?#]*))?(?:?([^#]*))?(?:#(.*))?$/;
     2 
     3 
     4  var url = "http://www.ora.com:80/goodparts?q#fragment";
     5 
     6  var result = parse_url.exec(url);
     7 
     8  var names = ['url','scheme','slash','host','port','path','query','hash'];
     9  var blanks ='        ';
    10  var i;
    11  for(i = 0;i < names.length; i++){
    12   console.log(names[i] + ':' + blanks.substring(names[i].length),result[i]);
    13  }

    结果:

    解读:

     在这其中我还发现,在[]中,是用不到转义的例如 . ?

    最后,若有错漏之处,希望能够指出?在此谢谢

    对于正则基础的细节部分,请参考同学http://www.cnblogs.com/DTBelieve/p/5373244.html

  • 相关阅读:
    hdu 5965 扫雷
    51nod 1441 士兵的数字游戏 (素数处理
    51nod 1453抽彩球
    51nod 1255 字典序最小的子序列
    codeforces 948A
    Splay 伸展树 bzoj3224 bzoj3223
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest C(gym/101142 C)
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest F(gym/101142 F)
    2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest G(gym/101142 G)
    Educational Codeforces Round 32 E 巨型背包
  • 原文地址:https://www.cnblogs.com/miaowwwww/p/5729266.html
Copyright © 2020-2023  润新知