正则表达式

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;

                     解读:   \uD83C\uDF00-\uD83C\uDFFF  | (或)      \uD83D\uDC00-\uD83D\uDE4F

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

posted @ 2016-08-02 14:50  miaowwwww  阅读(352)  评论(0编辑  收藏  举报