正则表达式

 正则

  • 数据类型:
  • 基本: string number boolean null undefined
  • 引用类型: array object regExp function
  • 创建正则
    字面量创建
        正则由匹配的字符和修饰符组成
        var reg = /123/ig;
        new RegExp方式创建
        var reg1 = new RegExp('123','ig')
        var s = 'abc';
        var reg3 = new RegExp(s, 'i');
        console.log(reg3);
    修饰符
          i: 忽略大小写
          g : 全局匹配
    常用的元字符
    - d  0-9数字
    - D  非数字
    - w   数字、字母(大小写)、下划线
    - W   除了数字、字母(大小写)、下划线以外的任意字符
    - s   匹配空格或空白字符
    - S   除了空白以外的字符
    - .    除了换行的任意字符
    - .   点本身
    -    边界  单词的两边和字符串的开头和结尾都是边界
    - ^   开始
    - $   结尾
    数量
    - * 0-多次 - ? 0-1次 - + 1-多次 - {n} n次 - {n,} 至少n次 - {n,m} n-m次
    或者
    - (a|b|c) a,b,c中的一个字符 - [abc] a,b,c中的一个字符 - (abc|xyz|opq) abc或者xyz或者opq中的一组 - [a-z] 匹配小写字母中的一个 - [^a-z] 除了小写字母中以外的任意字符
 
  • 正则相关方法
    regExp1.test(string) // true、false
    regExp2.exec(string); //用正则匹配字符串中对应的字符
        var str = 'welcome to ujiuye!'
        var reg = /e/g;
        console.log(reg.lastIndex); //0 下一次匹配的开始位置
        reg.lastIndex = 2; //设置匹配的开始位置
    
        var r = reg.exec(str);
        console.log(r); //6
        console.log(reg.lastIndex); //7
    
        r = reg.exec(str);
        console.log(r); //16
    
        r = reg.exec(str);
        console.log(r); //null 
 
  • 字符串方法(正则相关):
    string.match(reg) ; 匹配字符串中符合正则表达式的字符
        var str = 'welcome to ujiu-ye!'
        var reg = /e/g;
        var r = str.match(reg); //如果正则没有修饰符g ,和调用一次exec结果一样
        console.log(r);  //['e','e','e'] //如果有修饰符,就是把所有的匹配到的字符放在数组中返回
       
        string.split(/[- ,]/); 同时用多个分割符分割字符串
        string.replace(/123/g,''); 全局替换
        string.replace(/(123)/g,'$1') 使用分组替换
        string.search(reg); 返回第一次匹配的字符的索引

参考资料:https://www.cnblogs.com/libinqq/archive/2008/07/31/1257699.html

原文地址:https://www.cnblogs.com/musong-out/p/11481794.html