es6正则表达式

58 阅读2分钟
  • 正则是对象数据类型

  • 创造正则的两种方式: 字面量, 构造函数

  • 正则是专门用来处理字符串的一种技术(获取 匹配)

  • let reg = / were /

  • 双斜杠里面的东西,我们称为元字符

  • 常见正则运算符

    • \d 表示一个数字字符
    • \D 除了数字的所有字符
    • \n 换行
    • \r 回车
let str1 = 'qwertyuioasdfg hjkl'
     let reg1 = /hello/;  //test是正则类原型上的方法
     console.dir(reg1.test(str1)); // 使用正则reg1去匹配 字符串str1,,若str1能满足正则的规则,则返回true


     let reg2 = /\d/;
     console.log(reg2.test(str1));  //false

     let reg3 = /O/;
     let obj = {
         name:'qqq'
     };
     let t_str = JSON.stringify(obj);
     console.log(reg1.test(t_str)); //false

     let str4 = '123456'
     console.log(/\D/.test(str4)); //取非

量词运算符

  • *:出现0-多次
  • +:前面是q..q后面一个到多个数字 在后面必须根一个hello
  • ?:/q\d?hello/ // 前面是q..q后面要么什么都没有,要不就是一个数字 在后面必须根一个hello
  • /q\d{n}/:获取q后面n个数字
  • /q\d{n+,}/:获取至少q后面n个字符
  • /q\d{0,10}/: 获取n后面0~10个数字
  • /^zhufeng/: 以z开头
  • /zhufeng$/: 以g结尾
  • \ 转义,把那些在正则当中有特殊含义的字符,转义成没有特殊含义的普通字符
  • . 代表了处理换行以外的任意字符 .点本身用这个
  • [^a-z] 小写字符以外的任意字符
 //转义  \
 let tt = "hello"zhufeng"";
 console.log(tt); // "hello"zhufeng""
 //或 |
 let reg = /[xy]/  等价于let reg = /x|y/  输出x或y
 let reg2 = /x|food/;    //输出x或f,然后在输出ood
         let str = 'zzzz'
         let reg = /^zhufeng/  //以z开头,后面是hufeng
         let reg = /^zhufeng$/  //以z开头,以g结尾
         let reg1 = /hello/
         let reg2 = /q\d?hello/  // 前面是q..q后面要么什么都没有,要不就是一个数字  在后面必须根一个hello
 ​
         let reg3 = /q\d*hello/  //前面是q..q后面要么什么都没有,要不就是一个或多个数字  在后面必须根一个hello
         let reg4 = /q\d+hello/  // 前面是q..q后面一个到多个数字  在后面必须根一个hello
         let reg5 = /q\d{3}hello/   //前面是q..q后面3个数字  在后面必须根一个hello
         let reg6 = /q\d{3+,}hello/   //前面是q..q后面至少3个数字  在后面必须根一个hello
         let reg7 = /q\d{0,10}hello/   //前面是q..q后面0-10个数字  在后面必须根一个hello
        

量词运算符应用

  1. 获取电话号码

    • 要求:首位数字是1,第二位是【35789】中任意一位
         let arg = /^1[35789]\d{9}$/;  //以1开头,第二位是35789中的一位,后面是9个数字结尾
          let ss = '13578998156';
         console.log(arg.test(ss));

2) 获取年龄

  • 要求:

    • 有效年龄在18-65之间
 let str = '35';
         /*
             18 19
             20 59
             60 65
         */
         let res = /(1[89])|([2-5]\d)|(6[0-5])/;
         console.log(res.test(str));

3) 获取身份证的方式

  • 要求:对最后一位进行判断,要求最后一位是数字或者X
 let id = '12345678912345678';
 //方法一
     let reg = '/^\d{17}[\dX]/';
 //方法二
     let reg2 = '/^\d{17}[0-9X]/'
 //方法三
     let reg3 = '/^\d{17}[\d|X]/'
     console.log(reg.test('id'));

4)表单

 <body>
     <div class="box">
         <input type="number" id="numPone" placeholder="手机号"><br>
         <input type="text" id="id" placeholder="身份证"><br>
         <input type="text" id="age" placeholder="年龄"><br>
         <input type="text" id="number" placeholder="有效数字"><br>
         <button>注册</button>
     </div>
     <script>
         let numPone = document.getElementById("numPone"),
             ids = document.getElementById("id"),
             age = document.getElementById('age'),
             btn = document.querySelector("button"),
             num = document.getElementById('number')
 ​
         let phoneReg = /^1[35789]\d{9}/,
             idReg = /^\d{17}(\d|X)$/,
             ageReg = /([1-9]\d)|[100]/,
             numReg = /^[+/-]?(([1-9]\d+)|\d)(.\d+)?)$/
         btn.onclick = function() {
             let phone = numPone.value,
                 myId = ids.value,
                 myAge = age.value;
 ​
                 if(!phoneReg.test(phone)) {
                     alert('手机号不合法');
                     return
                 }
                 if(!idReg.test(myId)) {
                     alert('身份证不合法');
                     return
                 }
                 if(!ageReg.test(myAge)) {
                     alert(false);
                     return
                 }
                 alert('success')
         }
 ​
     </script>