常用的正则表达式

161 阅读1分钟
  • []:

    1、中括号中出现的字符一般都代表本身的含义

    let reg = /^[@+]$/;
    console.log(reg.test("@"));//true
    console.log(reg.test("+"));//true
    console.log(reg.test("@@"));//false
    console.log(reg.test("++"));//false
    reg = /^[\d]$/;//代表的还是0-9之间的数字
    

    2、中括号中不存在多位数

    let reg = /^[789]$/;
    console.log(reg.test("7"));//true
    console.log(reg.test("8"));//true
    console.log(reg.test("9"));//true
    console.log(reg.test("78"));//false
    console.log(reg.test("79"));//false
    console.log(reg.test("789"));//false
    
  • 验证是否为有效数字

    //规则分析:
    //  1、可能出现 + -,也可能不出现     [+-]?
    //  2、以为0-9都可以,多位首位不能是0  (\d|([1-9]\d+))
    //  3、小数部分可能由可能没有,一旦有后面必须有小数点+数字
    let reg = /^[+-]?(\d|([1-9]\d+))(.\d+)?$/;
    console.log(reg.test("1"));//true
    console.log(reg.test("-123"));//true
    console.log(reg.test("1.3"));//true
    console.log(reg.test("25k"));//false
    console.log(reg.test("22.666"));//true
    console.log(reg.test("22."));//false
    console.log(reg.test("2+"));//false
    
  • 验证密码

    //数字、字母、下划线
    let reg = /^\w{6,16}$/;
    
  • 验证真实姓名

    //1、汉字的编码:/^[\u4E00-\u9FA5]$/
    //2、名字长度:2-10
    //3、可能有译名  .汉字
    let reg = /^[\u4E00-\u9FA5]{2,10}(·[\u4E00-\u9FA5]{2,10}){0,2}$/;
    
  • 验证邮箱

    //\w+((-\w+)|(.\w+))*
    //  1、开头是数字字母下划线(1到多为)
    //  2、可以是-数字字母下划线  或者.数字字母下划线  整体0到多次
    //邮箱的名字可以是由数字 字母 下划线 - .组成的,但是- . 不能作为开始
    //@[A-Za-z0-9]+
    //@符号后面只能紧跟数字或者字母(一到多位)
    //((.|-)[A-Za-z0-9]+)*
    //对@后面的名字的补充   例如:.com.cn  就是捕获.com的
    //.[A-Za-z0-9]+
    //匹配域名
    let reg = /^\w+((-\w+)|(.\w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;
    
  • 身份证号码

    //1、一共18位
    //2、最后一位可能是x
    //身份证前六位:省市县的信息
    //中间八位:年月日
    //最后四位:
    //  1、最后一位:x或者数字
    //  2、到数第二位:偶数:女  奇数: 男
    //  3、其余是经过算法算出来的//小括号分组的第二个左右:分组捕获,不仅可以把大正则匹配的信息捕获到,还可以单独捕获到每一个小分组的内容
    let reg = /^(\d{6})(\d{4})(\d{2})(\d{2})\d{2}(\d)(\d|x)$/;
    ​
    //看18位的身份证正则:
    //[1-9]\d{5}                 前六位地区,非0打头
    //(18|19|([23]\d))\d{2}      出身年份,覆盖范围为 1800-3999 年
    //((0[1-9])|(10|11|12))      月份,01-12月
    //(([0-2][1-9])|10|20|30|31) 日期,01-31天
    //\d{3}[0-9Xx]:              顺序码三位 + 一位校验码//15位的身份证:
    //[1-9]\d{5}                  前六位地区,非0打头     
    //\d{2}                       出生年份后两位00-99
    //((0[1-9])|(10|11|12))       月份,01-12月
    //(([0-2][1-9])|10|20|30|31)  日期,01-31天
    //\d{3}                       顺序码三位,没有校验码var reg =/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/;