• js 正则表达式


    1.^和 $

    • ^ 以什么元字符开始
    • $ 以什么元字符结尾
    • ^和$ 两个都不加:字符串中包含符合规则的内容即可
    • ^/$ 两个都加:字符串只能是和规则一致的内容
    • \d 匹配所有数字
    1.1 匹配 以数字开头的字符串
    let reg = /^\d/;
    console.log(reg.test('name'));   //false
    console.log(reg.test('2020name'));  //true
    console.log(reg.test('name2020'));   //false
    
    • 1
    • 2
    • 3
    • 4
    1.2 匹配 以数字结尾的字符串
    let reg = /\d$/;
    console.log(reg.test('name'));   //false
    console.log(reg.test('2020name'));  //false
    console.log(reg.test('name2020'));   //true
    
    • 1
    • 2
    • 3
    • 4
    1.3 匹配 带数字的字符串
    let reg = /\d/;
    console.log(reg.test('name'));   //false
    console.log(reg.test('2020name'));  //true
    console.log(reg.test('name2020'));   //true
    
    • 1
    • 2
    • 3
    • 4
    1.4 严格匹配
    // 以数字开头,数字结尾,\d表示只有一个数字
    let reg = /^\d$/;
    console.log(reg.test('2'));   //true
    console.log(reg.test('21'));   //false  如果是/^\d+$/的话,则为true
    
    • 1
    • 2
    • 3
    • 4

    2. 转义字符 \

    2.1 ‘.’ 是代表除换行符之外的任意字符,而不是小数点let
    // 这里表示在2和3之间有一个任意字符
    reg = /^2.3$/; 
    console.log(reg.test('2.3')); //true
    console.log(reg.test('2@3')); //true
    console.log(reg.test('23')); //false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    2.2 现在我们把‘.’变为一个普通的小数点(在.前面加上转义字符\)
    // 这里.就是表示.
    let reg = /^2\.3$/;
    console.log(reg.test('2.3')); //true
    console.log(reg.test('2@3')); //false
    
    • 1
    • 2
    • 3
    • 4
    2.3 {n,m}

    它是代表前面的元字符出现 n 到 m 次

    //这个正则匹配的是数字出现2到4次即可,明显第三个超出了,应该返回false,但是结果却是true,但是加上^$ 就不一样了
    let reg = /\d{2,4}/;
    reg.test('1');  //false
    reg.test('14'); //true
    reg.test('123456'); //true
    //加上^$ 之后的结果:这个就代表只能有2-4位数字,超过就多余,而上一个匹配的是只有字符串中出现2-4次即可,因此加上^$ 更加严谨
    let reg = /^\d{2,4}$/;
    reg.test('1'); //false
    reg.test('14'); //true
    reg.test('123456'); //false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2.4 x|y

    x 或 y:直接 x|y 会存在优先级问题,一般配合小括号进行分组使用,因为小括号改变处理的优先级 => 小括号:分组

    //匹配的是:以18开头或者以29结尾的都可以,以1开头以9结尾,8或2都可以,所以不加括号怎么理解都可以
    //以下的匹配结果都为true
    console.log(reg.test('18'));
    console.log(reg.test('29'));
    console.log(reg.test('129'));
    console.log(reg.test('189'));
    console.log(reg.test('1829'));
    console.log(reg.test('182'));
    
    //以上不加括号我们可以有很多理解方式都是对的,但是我们加上括号,就不可能想上面那样理解了;
    //匹配的是:18或者29中的一个,其余都是false
    let reg = /^(18|29)$/;
    console.log(reg.test('18'));
    console.log(reg.test('29'));
    console.log(reg.test('129'));
    console.log(reg.test('189'));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    2.5 []
    • 中括号中出现的字符「一般」都代表它本身的含义(会消磁,把他本身的意义都消除掉了)
    • \d 在中括号里面的含义仍然是 0-9,这个没有消磁
    • [18]:代表的是 1 或者 8 中的任意一个
    • [10-29]:代表的是 1 或者 9 或者 0-2

    下面的‘.’就是小数点的意思

    //下面的‘.’就是小数点的意思
    let reg = /^[.]+$/;
    
    • 1
    • 2
    • 匹配的含义是:\d还是代表0-9
    let reg = /^[@+]$/; 
    console.log(reg.test('@')); //true
    console.log(reg.test('+')); //true
    console.log(reg.test('@@')); //false
    console.log(reg.test('@+')); //false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 匹配的含义是:1或者8
    let reg = /^[18]$/;
    console.log(reg.test('1')); //true
    console.log(reg.test('8')); //true
    console.log(reg.test('18')); //false
    
    • 1
    • 2
    • 3
    • 4
    • 匹配的含义是:1或者0-2或者9
    let reg = /^[10-29]$/;
    //匹配的含义是:1或者0-2或者9或'('或')'
    let reg = /^[(10-29)]$/;
    
    • 1
    • 2
    • 3
  • 相关阅读:
    老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
    VUE的10个常用指令
    springboot整合Sentinel
    源码部署lamt架构
    python 爬取网站首页并获取资源文件
    【Docker】实现JMeter分布式压测
    2023-10-17 mysql-配置主从-记录
    【T+】余额表联查明细账,提示未将对象引用设置到对象的实例;参数格式错误,solutionID不能为空。
    第十二节:String类【java】
    Python玫瑰花
  • 原文地址:https://blog.csdn.net/qq_38868959/article/details/133182525