美文网首页
全面了解JS中的正则表达式

全面了解JS中的正则表达式

作者: 108N8 | 来源:发表于2017-04-17 16:43 被阅读434次
    正则:就是操作字符串
    1. 字符串操作
        str.split(); //分割
        str.toLowerCase(); //转小写
        str.toUpperCase(); //转大写
        str.charAt();//下标
        str.subString(1,2);//截取字符串(包含起始,不包含结束)
        str.indexOf();//查找下标
        str.lastIndexOf(); //从后面往前找
        str.charCodeAt();//转unicode
        string.fromCharCode();//将Unicode转为字符
        str.replace();
        str.slice() //跟substring类似
    
    2. 数组操作
        arr.splice(起始位置,n);//起始位置开始(从0开算),删除n个
        arr.slice(起始位置,结束位置);//起始位置开始“截取(不是删除)”,m-n个,不影响数组本身
        例:var arr1 = [1,2,3,4,5];
                    arr1.splice(1,2);//23         arr1.splice(2,2);//34
                    alert(arr1);//145             alert(arr1);//125
                var arr2 = [1,2,3,4,5];
                    arr2.slice(1,2);//2  一个      alert(arr2.slice(2,2));//空
                    alert(arr2);//12345            alert(arr2);//12345
    
    3. 正则
    正则:
        1.方便
        2.性能极高
    什么是正则:正则就是一套规则
        全称:正则表达式(规则表达式)
    创建:
        var reg=new RegExp(); regular expression :正则表达式
            new RegExp('表达式','选项');
        str.search(正则); 查找,只找第一次出现的位置,返回出现的位置
        JS风格:new RegExp('','');
        Perl风格:/a/i;
    

    match:匹配
        str.match();//
            匹配出来的是一个数组,找不到返回null
            把符合的全部提取出来
    

    str.replace(正则,添加的对象);
    js或者|| 
    正则的或者 |
    

    选项: 
    i:ignore 忽略大小写
    g:global 全局
    m:mutil-line 多行
    选项不区分先后。
    ^行首   =>  ^不配合m,代表整个字符串的开头
           =>   ^配合m,会识别字符串换行
    $行尾  =>
    

    方括号:
    1.[q,a,s] 代表 q|a|s
    2./q[acd]c/  代表qac | qcc | qdc
    3.r[d,f]  rd rf 
    4.\d  [0,1,2,3,4,5,6,7,8,9]   
    5. "-"代表一个区间  [0-9]
    6.[^0-9] ^排除  非数字
      [^a-z]  非字母
    

    量词:
        /\d\d\d\d\d/
        {n} 正好n个 /\d{5}/  
        {n,m}最少n个,最多m个  
            /\d{1,4}/
        {n,}最少n个,多了不限
            /\d{n,-10}/  错误写法
        {,m} 最少不限,最多m个  不能这么写
        {0,1}可有可无
    

    简写:
        + {1,} 若干
        * {0,}可以没有,有了不限
        ? {0,1} 可有可无
    
    /ab+/    是abbbbbbbbbbbb
    /(ab)+/  匹配的是ababab
        ()正则里面叫:分组
    /abc[0-9]{1,4}/
        abc1
        abc11
        abc111111  错了
    

    转译:\
        \d digital  数字 [0-9]
        \w  word 单词
            代表区间:[a-z0-9_]->字母、数字或者_
        \s space 空白
        \D  非数字 [^0-9]
        \W  非单词 [^a-z0-9_]
        \S  非空白
        . 任意东西
        \. 点本身(x想要.)
        \\    \本身
        \\\\  \\本身
        \n 换行
    

    /./  任意一个
    /.+/  任意多个
    /.*/ 可有可无
    

    reg.test(str)
        如果符合返回true,否则返回false
        只要其中有一部分符合就返回true,否则返回false
    

    例1:校验座机号
    010-88688866
    0416-1234567
    88688866(不加区号也可以)
    区号:(0[1-9]\d{1,2}-)?
    号码:[1-9]\d{6,7}
    /^(0[1-9]\d{1,2}-)?[1-9]\d{6,7}$/


    例2:校验邮箱:
    abc@163.com
    10000@qq.com
    zl@datura.com
    用户名:\w+
    \w+ @ [a-z0-9]+ (.[a-z]{2,8}){1,2}
    \w+@[a-z0-9]+(.[a-z]{2,8}){1,2}


    例3:校验中文

    /[\u4e00-\u9fa5]{2,8}/
    

    例4:校验手机号
    移动号码:134 135 136 137 138 139 147 150 151 152 157 158 159 178 182 183 184 187 188
    联通号码:130 131 132 145 155 156 171 175 176 185 186
    电信号码:133 149 153 173 177 180 181 189

    /^0?(13[0-9]|15[012356789]|18[0-9]|14[579]|17[135678])[0-9]{8}$/
    

    例5:校验身份证号
    公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
    地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
    出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
    顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
    下面是正则表达式:
    出生日期1800-2099 (18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])
    身份证正则表达式/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i
    位校验规则 6位地址编码+6位出生日期+3位顺序号
    位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位


    4. 补充
        编码:encodeURIComponent(str)
        解码:decodeURIComponent(str)
    

    相关文章

      网友评论

          本文标题:全面了解JS中的正则表达式

          本文链接:https://www.haomeiwen.com/subject/acitzttx.html