• 正则表达式及常用匹配规则


    正则表达式(regular expression)  由表达式+修饰符组成

    1.声明方式

      a.字面量声明 :var reg = /表达式/修饰符;  

      b.构造函数:var reg = new RegExp("表达式","修饰符") ;   

    var reg = /day/ig; //  /表达式/  修饰符: i忽略大小写; g全局匹配(不加则匹配一个)
    var reg = new RegExp("day", "ig"); // ("表达式", "修饰符")

    2.拓展方法 test() / exec()

        var str = "good good study, day day up";
        var reg = /dAy/ig;
        // test  若包含符合正则表达式的字符串,返回true,否则返回false
        console.log(reg.test(str));//true
    
        // exec 只匹配一次 ,则提取该字符串形成新数组,不包含则返回null
        console.log(reg.exec(str));// ["day"]

     3.字符串使用正则表达式的函数

      a.字符串 match()方法,匹配字符串到新数组(默认匹配一个) 没有匹配内容则返回null

        var str = "good good study, day day up";
        console.log(str.match("day")); // ["day"]
        console.log(str.match("dAy")); // null
        // 配合正则
        var reg = /dAy/ig;
        console.log(str.match(reg)); // ["day", "day"]

      b.字符串 replace() 方法  替换匹配的字符串(默认替换一个)

        var str = "good good study, day day up";
        console.log(str.replace("day", "money")); // "good good study, money day up"
        // 配合正则
        var reg = /day/ig;
        console.log(str.replace(reg, "money")); // "good good study, money money up"

      c.字符串 split() 方法  转换数组

        var str = "good good study, day day up";
        var reg = / /gi;
        // var arr = str.split(" "); // 按空格展开
        var arr = str.split(reg); // 按空格展开
        console.log(111, arr);// ["good", "good", "study,", "day", "day", "up"]

    4.普通字符(字面量字符 a-z A-Z 0-9)

    5.元字符(有特殊意义的字符)

      a.限定符   规定正则表达式中 子表达式出现的次数

          *   匹配前边的子表达式出现 0 次 或 多次   {0,}
          +   匹配前边的子表达式出现 1 次 或 多次   {1,}
          ?   匹配前边的子表达式出现 0 次 或 1次    {0,1}

          {n}    匹配前边的子表达式 n次
          {n,}   匹配前边的子表达式 最少出现n次 
          {n,m}  匹配前边的子表达式 最少出现n次  最多出现m次
        var str = "good good study, ay ay up";
        var reg = /d*ay/ig;
        console.log("1", reg.test(str)); // true
        var reg = /d+ay/ig;
        console.log("2", reg.test(str)); // false
        var reg = /d?ay/ig;
        console.log("3", reg.test(str)); // true
        var reg = /d{1}ay/ig;
        console.log("4", reg.test(str)); // false
        var reg = /d{1,}ay/ig;
        console.log("5", reg.test(str)); // false
        var reg = /d{0,1}ay/ig;
        console.log("6", reg.test(str)); // true

       b.定位符

       ^ 匹配字符串的开头
       $ 匹配字符串的结尾
       ^ $ 单一使用不能将规则定死   同时定义会将规则定死
        var str = "googleg";
        var reg = /^g$/ig;
        console.log("7", reg.test(str)); // false

      c.字符匹配符

       [xyz]  匹配这个集合中的任一一个字符(与x|y|z一样), 但方括号里可以写范围, 如:[a-z] 表示小写a到小写z范围的字符
       [0-9a-zA-Z$_]    可以包含字符"$ _"
       [^0-9]   不包含0-9的任意字符
        var str = "googleg";
        var reg = /^g[a-z]{5}g$/ig;
        console.log("8", reg.test(str)); // true
        var reg = /^g[a-z]g$/ig;
        console.log("9", reg.test(str)); // false
    
        var str = "googleg";
        var reg = /[^0-9a-zA-Z_$]/;
        console.log("10", reg.test(str)); // false
        var str = "google@g";
        console.log("11", reg.test(str)); // true

      其他匹配字符:

      w 匹配一个可以组成单词(变量)的字符(包括字符,数字,下划线) , 如[w]匹配“$5.98”中的5,等价于[a - zA - Z0 -9_]。
      W 查找非单词字符。匹配一个不可以组成单词的字符,如[W]匹配"$5.98"中的$,等于[^ a - zA - Z0 -9_]。
      d 匹配一个数字字符,/d/  ==>  /[0 - 9]/
      D 匹配一个非数字字符,/D/  ==>  /[^ 0 - 9]/
      s 匹配一个空白字符,包括 ,  , f,  , v等
      S 匹配一个非空白字符,等于 / [^ f v] /
      .  匹配除换行符 以外的其他字符
      [u4e00-u9fa5] 匹配中文字符
     
      d.选择匹配符 |
     
      e.转义字符 
     

    6.常见匹配规则

    检查邮政编码//共 6 位数字,第一位不能为 0
    /^[1-9]d{5}$/
    检查文件压缩包  //xxx.zipxxx.gzxxx.rar
    /^w+.(zip|gz|rar)$/       
    删除多余空格  //
    str.replace(/s+/,'');
    删除首尾空格
    str.replace(/^s+/,''); //去除开头的空格
    str.replace(/s+$/,'');  // 去除结尾的空格
    //删除所有的空格
    str.replace(/s/g,'');
    //删除前后的空格
    str.replace((^s+)|(s+$),'')
    
    电子邮件( xxxxx @ xxxx(.xxxx)+)
    /^w+@w+(.w+)+$/          
    如: 770107@qq.com; 770107@qq.com.cn   
    手机号(1开头任意数字)  1(3|5|7|8|4)d{9}
    /^1d{10}$/
    身份证
    /^d{17}(d|X)$/       
      422422 19660101 5810
      421087 19890101 121X 
    ^[1-9]d{5}[19|20]d{2}d{7}(d|X)$
    日期  (合法日期格式:xxxx-xx-xx或 xxxx/xx/xx或xxxx.xx.xx)
    /^d{4}[-/.]d{2}[-/.]d{2}$/
    只能输入中文
    str.replace(/[^u4e00-u9fa5]/g,'');
    账户名只能使用数字字母下划线,且数字不能开头,长度在6-15之间
    /^[a-zA-Z_]w{5,14}$/
    验证IP
    (xxx.)xxx.xxx.xxx|  
    254.245.255.255
    240.196.19.5
    /^((25[0-5]|2[0-4]d|1d{2}|[1-9]?d).){3}(25[0-5]|2[0-4]d|1d{2}|[1-9]?d)$/
    首位不为0的整数或两位小数 /^(([1-9]d*)(.d{1,2})?|0.([1-9]|d[1-9])|0)$/
     
  • 相关阅读:
    PyTools包罗万象的python工具包
    手撕神经网络实验报告
    数组模拟队列 以及队列的复用(环形队列)
    Sentinel熔断降级
    二维数组与稀疏数组的转换dataStructures
    Sentine熔断降级进阶
    Centos7防火墙以及端口控制
    docker的安装以及使用命令
    ToDesk个人免费 极致流畅的远程协助软件
    typora+PicGo+gitee搭建免费的的床
  • 原文地址:https://www.cnblogs.com/younghxp/p/12407709.html
Copyright © 2020-2023  润新知