阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 元字符的应用

      元字符的应用

      []整括号的注意

      • 1、在整括号中出现的所有的字符都是代表本身意思的字符(没有特殊的含义,\d这种特殊)

          var reg = /^[.]\d+$/;
          console.log(reg.test("46545"));//->false
          console.log(reg.test(".89"));//->true
        
          var reg1 = /^[.]\d+[+]$/;
          console.log(reg1.test("46545"));//->false
          console.log(reg1.test(".89+"));//->true
        
          var reg2 = /^[.]\d+0[\d+]$/;
          console.log(reg2.test("46545"));//->false
          console.log(reg2.test(".465045"));//->true 如果是465045就是false
          console.log(reg2.test(".890+"));//->true
        
      • 2、整括号中不识别两位数,整括号内是多个取一个

          var reg1 = /^[12]$/;//->1或者2中的一个
          console.log(reg1.test("12"));//false
          console.log(reg1.test("1"));//true
          console.log(reg1.test("2"));//true
        
          var reg2 = /^[12-48]$/;//->1、2-6中的一个、8 三个中的一个
          console.log(reg2.test("128"));//false
          console.log(reg2.test("138"));//false
          console.log(reg2.test("158"));//false
          console.log(reg2.test("1"));//true
          console.log(reg2.test("3"));//true
          console.log(reg2.test("5"));//true
          console.log(reg2.test("8"));//true
          console.log(reg2.test("13"));//false
        
          var reg = /^[\w-]$/;//->数字、字母、下划线、- 中的一个
          console.log(reg.test("-"));//true
          console.log(reg.test("89"));//false
          console.log(reg.test("_"));//true
        

      ()整括号的另外作用:改变x|y的默认的优先级;

      |的优先级很高;

      功能:替换,“或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food”。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

          var reg1 = /^18|19$/;
          //错误分析:想匹配119和189,1开始,9结尾,中间是8或者1的任意一个;
          //实际可以这些数字都是可以匹配成功的:18、19、181、189、119、819、1819...
          console.log(reg1.test("19"));//true
          console.log(reg1.test("18"));//true
          console.log(reg1.test("119"));//true
          console.log(reg1.test("189"));//true
          console.log("test 189999999999",reg1.test("189999999999"));//true
          console.log("test 819",reg1.test("819"));//true
          console.log("test 1819",reg1.test("1819"));//true
          console.log("test 1889899819",reg1.test("1889899819 "));//true
      	
          //正确分析:18|19 可以匹配18开头或者19结尾的;(18开头)、(19结尾)、(18开头和19几位的),都可以匹配成功;
      	
      	
          //|替换,"或"操作字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。
      	
          var testReg1=/m|food/;
          //匹配(m开头)、(food结尾)、(m开头或者food结尾);这三种都可以匹配
          console.log("test m",testReg1.test("m"));//true
          console.log("test m464545646565",testReg1.test("m464545646565"));//true
          console.log("test mood",testReg1.test("mood"));//true
          console.log("test food",testReg1.test("food"));//true
          var testReg2=/(m|f)ood/;
          //匹配mood/food
          console.log("test m",testReg2.test("m"));//false
          console.log("test m464545646565",testReg2.test("m464545646565"));//false
          console.log("test mood",testReg2.test("mood"));//true
          console.log("test food",testReg2.test("food"));//true
      	
          var reg2 = /^(18|19)$/;
          //18、19
          console.log(reg2.test("19"));//true
          console.log(reg2.test("18"));//true
          console.log(reg2.test("119"));//false
          console.log(reg2.test("189"));//false
      	
          var reg3 = /^1[8|1]9$/;
          //119、189
          console.log("test 19",reg3.test("19"));//false
          console.log(reg3.test("18"));//false
          console.log(reg3.test("119"));//true
          console.log(reg3.test("189"));//true
      

      正则实践

      • 1、有效数字的正则(可以是 正数、负数、零、小数 )

        • 1)、".“可以出现也可以不出现,但是一旦出现,后面必须跟着一位或者多位数字

        • 2)、最开始可以有+/- 也可以没有

        • 3)、整数部分,一位数可以是0-9之间的一个,多位数不能以0开头

            var reg = /^[+-]?(\d|([1-9]\d+))(\.\d+)?$/;//.是一个元字符,所以需要转义;
            console.log("test +1",reg.test("+1"));//true
            console.log("test +-1",reg.test("+-1"));//false
            console.log("test -1.001",reg.test("-1.001"));//true
            console.log("test -1.001.002",reg.test("-1.001.002"));//false
            console.log("test 0",reg.test("0"));//true
          
      • 2、年龄介于18~65之间

        • 18~65可以分为三份;18-19 20-59 60-65

        • 因为1开头的不能是12,15,14这些;

        • 6开头的不能是66,68这些;

        • 2和5开头,后面可以随便,0-9都可以;

            var reg = /^(1[8-9]|[2-5]\d|6[0-5])$/;
            console.log("test 18",reg.test("18"));//true
            console.log("test 12",reg.test("12"));//false
            console.log("test 20",reg.test("20"));//true
            console.log("test 65",reg.test("65"));//true
            console.log("test 69",reg.test("69"));//false
          
      • 3、验证邮箱的正则(简版)

        • 左边:数字、字母、下环线、.、-

            var reg = /^[\w.-]+@[0-9a-zA-Z]+(\.[a-zA-Z]{2,4}){1,2}$/;
            /*
            * \w:数字、字母、下划线中的任意一个字符  [0-9a-zA-Z_]
            * [\w.-]:[\w]、[.]、[-]三者中的任意一个,出现一次或者多次;
            * [0-9a-zA-Z]:大小写,或者数字;
            * (\.[a-zA-Z]{2,4})  .后面加2-4位大小写的域名,比如.com .cn
            * {1,2} 出现一次或者两次。可能是顶级域名,也可能是二级域名;
            * */
            console.log(reg.test("weqwes@sina.com.cn"));//true
          
      • 4、汉字昵称 2-4位汉字

              var reg = /^[\u4e00-\u9fa5]{2,4}$/;
        
      • 5、身份证号码

          var reg1 = /^\d{17}(\d|X|x)$/;
        
          //342224199004281111X
          var reg2 = /^(\d{2})(\d{4})(\d{4})(\d{2})(\d{2})(\d{2})(\d)(\d|X|x)$/;
        
          console.log("test 34222819000428111x",reg1.test("34222819000428111x"));//true
          console.log("test 34222819000428111X",reg1.test("34222819000428111X"));//true
          console.log("test 34222819000428111x",reg2.test("34222819000428111x"));//true
          console.log("test 34222819000428111X",reg2.exec("34222819000428111X"));//["34222819000428111X", "34", "2228", "1900", "04", "28", "11", "1", "X", index: 0, input: "34222819000428111X"]
        
      • 6.匹配整数或者0-8位小数;

        const test0 = “01”;//true const test1 = “1.";//true const test2 = “5”;//true const test3 = “999999999.34546782”;//true const test4 = “5.10”;//true

        const test5 = “123.45678.908”;//false const test6 = “1s34.5678”;//false const test7 = “1s34.3454678332”;//false const test8 = “123.45678.";//false

      代码如下

      const reg=/^\d{1,}\.?\d{0,8}$/;
      
      const test0 = "01";//true
      const test1 = "1.";//true
      const test2 = "5";//true
      const test3 = "999999999.34546782";//true
      const test4 = "5.10";//true
      
      const test5 = "123.45678.908";//false
      const test6 = "1s34.5678";//false
      const test7 = "1s34.3454678332";//false
      const test8 = "123.45678.";//false
      
      console.log(reg.test(test0));
      console.log(reg.test(test1));
      console.log(reg.test(test2));
      console.log(reg.test(test3));
      console.log(reg.test(test4));
      console.log("----");
      console.log(reg.test(test5));
      console.log(reg.test(test6));
      console.log(reg.test(test7));
      console.log(reg.test(test8));
      
      目录
      目录