zoukankan      html  css  js  c++  java
  • 正则表达式

      1、正则都是操作字符串的

      2、正则写法:

        var re=//;

        var re=new RegExp();

        var re=/a/;   var re=new RegExp('a');

      3、test:正则去匹配字符串,如果匹配成功就返回真,否则为假

        test的写法:正则.test(字符串);

      4、转义字符:

         :换行

         :指表

         :回车

        s:空格

        S:非空格

        d:数字

        D:非数字

        w:字符  (字母,数字,下划线)

        W:非字符

        . :任意字符

        .:真正的点

        :独立部分(是起始结束空格才算匹配成功)独立部分的应用:获取class元素

        B:非独立部分

        1:重复的第一个子项   应用:找重复项最多的字符和个数

        2:重复的第二个子项

         ..... 

        例: 

          var str='abc';

          var re=/a.c/;

          alert(re.test(str));//结果为true

          var str='a.c';

          var re=/a.c/;

          alert(re.test(str));//结果为true

          var str='abc';

          var re=/a.c/;

          alert(re.test(str));//结果为false

          var str='onetwo';

          var re=/one/;

          alert(re.test(str));//结果为true

          var str='onetwo';

          var re=/one/;

          alert(re.test(str));//结果为false

          var str='one two';

          var re=/one/;

          alert(re.test(str));//结果为true

          var str='onetwo';

          var re=/one/;  

          alert(re.test(str));//结果为false 都得满足才算成功

      

          var str='abca';

          var re=/(a)(b)(c)1/  

          alert(re.test(str));// 结果为true

          var re=/ww/;  如果匹配的字符为cb,结果为true,因为只要两个都是字符就可以成功

          var re=/w1/;如果匹配的字符为cb,结果为false,如果匹配cc或bb才会是true,只有前一个与后一个相同才为true

      5、search:正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1

        写法:字符串.search(正则);

      6、正则中默认区分大小写,如果不区分大小写,则需要在正则最后加标识 i

        var re=/B/i;

        var re=new RegExp('B','i');

      7、match:正则去匹配字符串,如果匹配成功,就匹配成功的数组,否则返回null。

          正则默认:正则匹配成功就会结束,不会再继续匹配,如果想全部查找,就要加标识g(全局匹配)

        量词:匹配不确定的位置 

          +:至少出现1次

        写法:字符串.match(正则)

        var re=/d/g;

      8、replace:正则去匹配字符串,匹配成功的字符去替换成新的字符串

        replace写法:字符串.replace(正则,想要替换新的字符串);

        replace的第二个参数可以是字符串也可以是回调函数

        例:var str='aaa';

          var re=/a/;  //结果为baa

          var re=/a/g;  //结果为bbb

          var re=/a+/g;  //结果为b

          str=str.replace(re,'b');

      9、“|”在正则中表示或的意思

        var re=/a|b|c/;

      10、匹配子项:小括号()---分组操作   如果把正则整体叫做母亲,则小括号里面的正则交做子项

         str.replace(re,function($0,$1,$2){

          //第一个参数$0(母亲),$1第一个孩子,$2第二个孩子

         });

        var str='abc';

        var re=/(a)(b)(c)/;

        alert(str.match(re));  //结果[abc,a,b,c]-------当match不加g的时候才可以获取到子项的集合

      11、 字符类:一组相似元素  []中括号整体代表一个字符,也就是说,括号中的任意一个字符与要匹配的字符串中对应位置的字符相同

        var str='abc';

        var re=/a[bde]c/;

        alert(re.test(str));//结果为true

        var str='abdc';

        var re=/a[bde]c/;  //---[bde]整体对应b

        alert(re.test(str));//结果为false

      12、排除:^如果写在[]里面的话,就代表排除的意思 

        var str='abc';

        var re=/a[^bde]c/;  //不是bde的任意一个

        alert(re.test(str));  //结果为false

      13、范围:-可以表示范围,注意范围需要从小到大

        var re=/a[a-z0-9]+c/; a到z的字母 0-9数字

      14、当正则需要传参的时候,一定要用全称的写法

        例:独立部分的应用:获取class元素     class='box1'  class='box1 box2' class='box1box2'  中'box1'

        function getClass(oParent,sClass){

          var arr=[];

          var aEle=oParent.getElementsByTagName('*');

          var re=new RegExp('\b'+sClass+'\b');

          for(var i=0;i<aEle.length;i++){

            if(re.test(aEle[i].className)){

              arr.push(aEle[i]);

            }

          }

        }

      15、应用:找重复项最多的字符和个数

      

                var str='adfaaacddaaasssssghhsjksffs'
                var arr=str.split('');//拆分成数组
                str=arr.sort().join('');//拆分数组后排序,使得相同字母挨在一起,再转化为字符串
                var value='';
                var index=0;
                var re=/(w)1+/g;
                str.replace(re,function ($0,$1) {
                    if(index<$0.length){
                        index=$0.length;
                        value=$1;
                    }
                });
                alert('最多的字符:'+value+',重复的次数'+index);
            }

      16、量词: 不确定位置出现的次数

        {n,m}至少出现n次,最多出现m次

        {n,} 至少n次

        {n}正好n次

        * 任意次     {0,}

        ?零次或1次  {0,1}

        +一次或任意次  {1,}

      17、 d*表示零次或多次数字

      18、^如果写在正则最开始的位置,代表起始的意思,

        $如果写在正则的最后位置,代表结束的意思

        例:查找QQ号

        var re=/^[1-9]d{4,11}$/; 

        如何去掉字符串中的前后空格

        var re =/^s+|s+$/g;

          str.replace(re,'');

      19、高级表单校验

         匹配中文:[u4e00-u9fa5]

         行首行尾空格:^s*|s*$

         Email:^w+@[a-z0-9]+(.[a-z]+){1,3}$

           网址:[a-zA-Z]+://[^s]*

         QQ号:[1-9][0-9]{4,9}

         邮政编码:[1-9]d{5}

         身份证:[1-9]d{14}|[1-9]d{17}[1-9]d{16}x

  • 相关阅读:
    php函数每日学习二十个(第二天)
    php函数每日学习二十个
    php代码效率小常识
    出差回来继续学习更新
    开博第一篇文章
    “类视图”和“对象浏览器”图标
    ASP.NET页面回车键触发Button按钮事件问题
    设置TextBox控件的TextMode属性
    C# 获取系统时间及时间格式
    ASP.NET 常用状态(信息)保存方式
  • 原文地址:https://www.cnblogs.com/yuxingyoucan/p/5771148.html
Copyright © 2011-2022 走看看