笔记4.07

98 阅读3分钟

正则表达式 (regExp): 规则表达式

可以根据规则 匹配想要的字符串 ;是对字符串的操作 ;

创建正则表达式

方式一: 字面量创建   /规则/
例:
    let reg = /a/; // 匹配a字符; 查看字符串中是否包含a
    let reg = /ab/;
    let str = "fdaaaaabfds";
    console.log(reg.test(str));
    console.dir(reg);
方式二: 内置构造函数创建正则s
let reg = new RegExp("a");
let str = "fdfds";
console.log(reg.test(str));

区别 :对于变量的解析


    let a = "hello";
    let reg1 = /a/;  // 等同于  let reg1 = new RegExp("a");
    let reg2 = new RegExp(a);  // 等同于  let reg2 = new RegExp("hello");

元字符 : 在正则里有特殊含义的字符 。

  1. . 匹配非行换的任意字符
例:
    let reg = /./;
    let str = `\n`;
    console.log(reg.test(str));
  1. \ 转义字符

需要匹配是否有 . 这个字符;

例:
    let reg = /./;
    let str = "baidu.com";
    console.log(reg.test(str));
  1. \s 匹配空格
例:
     let reg = /\s/;
     let str = "fda      fds";
     console.log(reg.test(str));
  1. \S 匹配非空格
例:
    let reg = /\S/;
    let str = "   safd";
    console.log(reg.test(str));

5.\d 匹配数字

例:
    let reg = /\d/;
    let str = "fdafddfas";
    console.log(reg.test(str));

6.\D 匹配非数字

例:
    let reg = /\D/;
    let str = "aa";
    console.log(reg.test(str));

7.\w 匹配数字字母下划线 ;

例:
    let reg = /\w/;
    let str = "dfsad";
    console.log(reg.test(str));

8.\W 匹配非 数字字母 下划线

例:
    let reg = /\W/;
    let str = "fdsafdsa";
    console.log(reg.test(str));

字符数量限定

    • : 代表 0 次到无限次 ;
例:
    let reg = /a*/;
    let str = "fdsfads";
    console.log(reg.test(str));
  1. ? : 出现0次到1次 ;
例:
    let reg = /fa?f/;   //  ff  或者  faf  
    let str = "fdsfafdfsd";
    console.log(reg.test(str));
    • : 出现1次到无限次;
例:
    let reg = /ab+c/;
    let str = "facd";
    console.log(reg.test(str));
  1. 字符出现指定次数 {n}
例:
    let reg = /a\d{4}c/;
    let str = 'dafsa3242cfdfd';
    console.log(reg.test(str));

5.字符出现 指定的 n 到 m 次 ; {n,m};

例:
    let reg = /a\w{2,4}c/;
    let str = 'fdsfdsafdc';
    console.log(reg.test(str));
  1. n次到无限次 {n,};
例:
    let reg = /a\d{1,}c/;
    等同于
    let reg = /a\d+c/;
    let str = "fdasfa23424c";
    console.log(reg.test(str));

特殊符号 1.以某个字符开头 ^

例:
    let reg = /^a\d+/;
    let str = "a432432dafds2342w34";
    console.log(reg.test(str));

2.限定以某个字符结尾 : $

例:
    let reg = /^a\d$/;
    let str = "a4";
    console.log(reg.test(str));
  1. | :或者
例:
    let reg = /^aab|cdd$/;   // 匹配 ab 或者是 cd  
    let str = "aabdd";
    console.log(reg.test(str));
  1. () 分组
例:
    let reg =  /^100(km|nm)$/  ;   // 把 k 和 n  进行分组 
    let str  = "100km";
    console.log(reg.test(str));
  1. [] : 集合 可以表示一些字符的集合 (1) 可以使用 - 连接
例:
    let reg = /^[a-z]\d{3}$/;   // 集合 需要连续的assci 码  。 且 集合代表一个字符
    let str = "a123";
    console.log(reg.test(str));

(2) 中括号里 自带或者关系

例:
    let reg = /^1[13456789]\d{9}$/;
    let str = "1389798734";
    console.log(reg.test(str));

    let  reg = /^a[1-30]$/;
    let str = "a2";
    console.log(reg.test(str));

扩展 \d ---> [0-9] \w ----> [0-9a-zA-Z_];

(3) 中括号里的 ^ 箭头 : 非 的意思 ;

例:
    let reg = /^a[^0-9]b$/;
    let str = "a1b";
    console.log(reg.test(str));

6.边界符 \b

例:
    let str = "this  a knife is";
    匹配是否有 is 这个单词 ;
    正则里有一个边界符 : \b : 开头 结尾 \W 都是边界;
    let reg = /\bis\b/;
    if(reg.test(str)){
        console.log("有is单词");
    }else{
        console.log("没有is单词");
    }

正则相关方法 正则相关方法 一、正则方法 :正则表达式 后跟的方法

1.正则.test(字符串)

例:
    let reg = /\d/;
    let str = "hellofds";
    console.log(reg.test(str));

2.返还匹配到的内容 g: 默认正则是惰性模式,只会匹配一个 符合规则的内容 可以通过 g 修饰符 修饰全局匹配 i : 忽略大小写

例:
    let reg = /\d+/g;
    let str = "fdsafd1111fdsa2222dsa3333fdas";
    console.log(reg.exec(str));
    console.log(reg.exec(str));
    console.log(reg.exec(str));
    console.log(reg.exec(str));
    let reg = /abc/ig;
    let str = "dfasfdsaABCfdsa";
    console.log(reg.test(str));

二、字符串正则方法 : 是字符串方法 可以使用正则表达式; 字符串方法 : 字符串开头的正则方法

  1. split(正则);
例:
    let str = "fdsaf342dfsaf234sdaf324343fdas";
    let reg = /\d+/;
    let res = str.split(reg);
    console.log(res);

2.match : 获取符合匹配的内容

例:
    let str = "fdsafd23432fdsafds21312fdsaf324dfas";
    let reg = /\d+/g;
    let arr = str.match(reg);
    console.log(arr);

3.search : 查找符合正则规则的字符串

例:
    let reg = /\d+/;
    let str = "fdsafdsa222fdsa";
    console.log(str.search(reg));

4.replace : 替换

例:
    let reg = /X+/ig;
    let str = "fdsafdsfxxxxfdsafdxxfdsafdaxxxxxxfdsf";
    //    let res =  str.replace(reg,"*");
    let res = str.replace(reg, function (arg) {
        // console.log(arg);
        return "*".repeat(arg.length);
    })
    console.log(res);