Date

6.27 - 5.1、5.2(Date,正则) - 图1

RegExp

标记

  • g —全局匹配
  • i — 忽略大小写
  • m — 多行匹配
  • y — 粘附, 只查找lastindex开始及其之后的字符串
  • u — unicode匹配
  • s — doall,表示. 匹配任何字符(包括\n 和 \r)

    元字符

  • ( [ { \ ^ $ | ) ] } ? * + . — 需要\进行转义

    1. /**
    2. * @description 如果字符串没有经过处理直接正则匹配会报错,所以需要转换
    3. * @param {string} string 当前传入的字符串
    4. * @returns 返回处理好的字符串
    5. */
    6. function regExpase(string) {
    7. const reg = /[\\"'()[\]{}|*.?+$^]/g;
    8. let regSource = RegExp(reg.source);
    9. /* $&匹配到的每一项,前面加\ */
    10. return (string && regSource.test(string)) ? string.replace(reg, '\\$&') : (string || '');
    11. }

    实例属性

  • global — bool 是否开启全局匹配

  • ignoreCase — bool 是否忽略大小写
  • unicode — bool 是否设置了u匹配标记
  • sticky — bool 是否开启y匹配
  • lastIndex — number 下一次搜索的位置
  • multiline — bool 是否多行匹配
  • dotAll — bool 是否全匹配
  • source — 拿到当前匹配的字符串 字面量
  • flags — 拿到当前的标记字符串

    实例方法

  • exec — 返回第一个匹配信息的数组,没有找到返回null,包含两个额外属性,index:当前匹配的起始位置,input:要查到的字符串。如果使用了全局模式,每一次都会继续向下查找而不是从第一个查找。

    1. let text = "mom and dad and baby";
    2. let pattern = /mom( and dad( and baby)?)?/gi;
    3. let matches = pattern.exec(text);
    4. console.log(matches.index); // 0
    5. console.log(matches.input); // "mom and dad and baby"
    6. console.log(matches[0]); // "mom and dad and baby"
    7. console.log(matches[1]); // " and dad and baby"
    8. console.log(matches[2]); // " and baby"
  • test —- 接受字符串,返回true和false,测试是否匹配

    继承方法

    1. // 都会返回当前字面量
    2. let pattern = new RegExp("\\[bc\\]at", "gi");
    3. console.log(pattern.toString()); // /\[bc\]at/gi
    4. console.log(pattern.toLocaleString()); // /\[bc\]at/gi

    构造函数属性

    RegExp 构造函数的所有属性都没有任何 Web 标准出处,因此不要在生产环境中使 用它们。

  • input — $_ 最后搜索的字符串(非标准特性)

  • lastMatch — $& 最后匹配的文本
  • lastParen — $+ 最后匹配的捕获组(非标准特性)
  • leftContext — $` input 字符串中出现在 lastMatch 前面的文本
  • rightContext — $’ input 字符串中出现在 lastMatch 后面的文本
    1. let text = "this has been a short summer";
    2. let pattern = /(.)hort/g;
    3. if (pattern.test(text)) {
    4. console.log(RegExp.input); // this has been a short summer
    5. console.log(RegExp.leftContext); // this has been a
    6. console.log(RegExp.rightContext); // summer
    7. console.log(RegExp.lastMatch); // short
    8. console.log(RegExp.lastParen); // s
    9. }