JS中的正则表达式

2023-10-27

什么是正则

正则就是一种规则的的表达式,书写一段规则,用于匹配一段字符串是否符合规则
创建正则表达式
创建正则表达式有两种方式:
1.字面量的形式
2.内置构造函数的形式

<script>
    *1.字面量的形式
    const reg = /abc/

    *2.内置构造函数的形式
    const reg1 = new RegExp('abc')

    console.log(reg)  // /abc/
    console.log(reg1)  // /abc/
</script>

正则的常用方法

1.匹配(test)
匹配字符串是否符合正则规则
符合—>true
不符合—>false
语法: 正则.test(字符串)
2.捕获
语法:正则.exec(字符串)

正则的元字符

正则的表达式的符号由哪些组成?
1.元字符
正则表达式的规则符号
2.修饰符
修饰整个正则表达式的符号

普通元字符

1.\d ------ 表示一位(一个)数字(0~9)
2. \D ------ 表示 一位 非数字(除了0~9)
3. \w ------ 表示 数字(0~9)字母(a-zA-Z)下划线(_) 其中的 一个
4. \W ------ 表示 除了 数字(0~9)字母(a-zA-Z)下划线 这些的某一个字符
5. \s ------ 表示 一位 空白字符
6. \S ------ 表示 一位 非空白字符
7. . ------ 表示 一位 非换行的任意字符
8. \ ------ 表示转义符
有意义的符号, 转为没有意义的文本
没有意义的文本, 转为有意义的符号

<script>
        const reg = /\d/    // 表示字符串中 至少包含一个 数字(0~9)

        console.log(reg.test('qwertyuiop')) // false
        console.log(reg.test('!@#$%^&*')) // false
        console.log(reg.test('1000')) // true

        const reg1 = /\D/   // 表示字符串中 至少出现一个 非数字的内容
        console.log(reg1.test('qwertyuiop')) // true
        console.log(reg1.test('!@#$%^&*')) // true
        console.log(reg1.test('1000')) // false

        const reg = /\w/    // 表示字符串中 至少包含一个 数字(0~9)字母(a-zA-Z)下划线(_) 其中的 一个

        console.log(reg.test('@#$%^&*'))    // false
        console.log(reg.test('@#$%_^&*'))    // true
        console.log(reg.test('y@#$%^&*'))    // true
        console.log(reg.test('6@#$%^&*'))    // true
        console.log(reg.test('abc_123'))    // true

        const reg1 = /\W/   //表示 字符串中 至少出现一个  数字(0~9)字母(a-zA-Z)下划线(_) 以外的 字符
        console.log(reg1.test('@#$%^&*'))    // true
        console.log(reg1.test('@#$%_^&*'))    // true
        console.log(reg1.test('y@#$%^&*'))    // true
        console.log(reg1.test('6@#$%^&*'))    // true
        console.log(reg1.test('abc_123'))    // false

        const reg = /\s/    // 表示字符串中 至少出现一个 空白字符
        console.log(reg.test('asd'))    // false
        console.log(reg.test('213'))    // false
        console.log(reg.test('#$%'))    // false
        console.log(reg.test('#$ %'))    // true

        const reg1 = /\S/   // 表示字符串 至少出现一个 非空白字符
        console.log(reg1.test('asd'))    // true
        console.log(reg1.test('213'))    // true
        console.log(reg1.test('#$%'))    // true
        console.log(reg1.test('#$ %'))    // true
        console.log(reg1.test(' '))    // false

        const reg = /./ // 表示字符串 至少出现一个 非换行的任意字符
        console.log(reg.test('\n')) // false
        console.log(reg.test('123\n')) // true

        const reg1 = /\./   // 表示字符串中至少出现一个 小数点
        console.log(reg1.test('100'))   // false
        console.log(reg1.test('1.00'))   // true
</script>

边界元字符

1.^ ------ 表示开头
2.$ ------ 表示结尾

<script>
        const reg1 = /\d/    // 表示字符串至少出现一个数字
        console.log(reg1.test('abc123def'))  // true
        
        const reg2 = /^\d/    // 表示字符串开头是一个数字
        console.log(reg2.test('abc123def')) // false
        console.log(reg2.test('123def'))    // true

        const reg3 = /\d$/    // 表示字符串结尾是一个数字
        console.log(reg3.test('abc123def')) // false
        console.log(reg3.test('abc123')) // true

        const reg4 = /^\d$/    // 表示字符串只能是一个数字
        console.log(reg4.test('abc123def')) // false
        console.log(reg4.test('123def'))    // false
        console.log(reg4.test('123'))       // false
        console.log(reg4.test('1'))         // true
</script>

正则的限定元字符

表示前边一个符号代表的内容出现多少次
1.* ------ 表示0~正无穷次
2. + ------ 表示 1~正无穷次
3. ? ------ 表示 0~1次
4. {n} ------ 表示 限定 n 次, 不能多也不能少
5. {n,} ------ 表示 最少 n 次
6. {n,m} ------ 表示 最少 n 次, 最多 m 次

<script>
        const reg1 = /^\d*$/  // 这个字符串的数字只能出现 0~正无穷次
        console.log(reg1.test('1'))   // true
        console.log(reg1.test('1a'))   // false

        const reg2 = /^\d+$/ // 这个字符串的数字只能出现1~正无穷
        console.log(reg2.test('100'))    // true
        console.log(reg2.test('qwer'))    // false
        console.log(reg2.test('999qwer'))    // false

        const reg3 = /^\d?$/ // 这个字符串的数字只能出现 0~1 次
        console.log(reg3.test('666'))    // false
        console.log(reg3.test('6'))    // true

        const reg4 = /^\d{2}$/   // 这个字符串的数字只能出现 2 次
        console.log(reg4.test('666'))    // false
        console.log(reg4.test('66'))    // true
        console.log(reg4.test('6'))    // false

        const reg5 = /^\d{2,}$/   // 这个字符串的数字最少出现 2 次
        console.log(reg5.test('666'))    // true
        console.log(reg5.test('66'))    // true
        console.log(reg5.test('6'))    // false

        const reg6 = /^\d{2,3}$/   // 这个字符串的数字最少出现 2 次 最多出现3次
        console.log(reg6.test('6666'))    // false
        console.log(reg6.test('666'))    // true
        console.log(reg6.test('66'))    // true
        console.log(reg6.test('6'))    // false
</script>

特殊元字符

1.()
含义1: 当成一个整体
含义2: 单独捕获(欠着)
2. |

字符为 或 左右两边的 都行
3. [ ]
包含
注意: [abcd] 包含其中一个即可 [] 实际代表的就是 一位字符
4. [^]

注意: [^abcd] 只要不是他们四个中的一个即可 [^] 实际代表的就是 一位字符
5.-
到(至)
通常与 包含 和 非 一起使用
[0-9] 数字 0~9 中的一个 \d
[^0-9] 不是数字 0~9 中的 一个 \D
[a-z] 小写 字母a~z
[A-Z] 大写 字母A~Z

<script>
        const reg = /(abc){2}/  // 表示 abc 这个整体 一定出现 2 次
        console.log(reg.test('abcdef')) // false
        console.log(reg.test('abcab')) // false
        console.log(reg.test('abcabc')) // true

        const reg = /(abc|def){2}/  // 这个字符串需要 abc 或者 def 出现两次
        console.log(reg.test('abcabc')) // true
        console.log(reg.test('abcdef')) // true
        console.log(reg.test('defabc')) // true
        console.log(reg.test('defdef')) // true

        const reg = /^[a-c]$/   // 这个字符串只能是 a-c 其中的任意一个字符
        console.log(reg.test('abc'))    // false
        console.log(reg.test('a'))    // true
        console.log(reg.test('b'))    // true
        console.log(reg.test('c'))    // true
        console.log(reg.test('@'))    // false
</script>

小练习
问题: 或(|) 的分界线在哪里?

<script>
    const reg = /^abc|def$/      // 这段正则什么含义?
    
    const reg1 = /^ab(c|d)ef$/   // 这段正则什么含义?

</script>

或( | )的分界线是小括号或者正则的边界

<script>
    const reg = /^abc|def$/      // 这段正则什么含义?
    *看第一个,没有小括号,那或的分界线就是到正则的边界,那么上述的题就可以分解为两个部分
    *1.^abc
    *2.def$
    *这两个部分的意思就是字符串以abc开头,以def结尾,但是因为条件是或所以满足其中一个就可以了
    console.log(reg.test('abc12345678'))     // true
    console.log(reg.test('12345678def'))     // true
    console.log(reg.test('1234abcdef5678'))     // false

    const reg1 = /^ab(c|d)ef$/   // 这段正则什么含义?
    *第二个,有小括号,那么或的边界线就是小括号
    *把它拆开看就是 ^ab (c|d) ef$
    *意思就是字符串以ab开头,ef结尾,中间要么是c要么是d
    console.log(reg1.test('abcef'))  // true
    console.log(reg1.test('abdef'))  // true
    console.log(reg1.test('bdef'))  // false
    console.log(reg1.test('abde'))  // false
</script>

重复元字符

符号: \1,\2,\3…\9,代表第几个小括号的值

<span></span>
<script>
   *  /(abc|def)\1/
   *  小括号 内 为 abc    \1 这个位置也需要是 abc
   *  小括号 内 为 def    \1 这个位置也需要是 def

        const reg = /^(abc|def)\1$/ // 小括号内是什么 \1 的位置就应该是什么
        console.log(reg.test('abcdef')) // false
        console.log(reg.test('abcabc')) // true
        console.log(reg.test('defabc')) // false
        console.log(reg.test('defdef')) // true

        const reg1 = /^(abc|def){2}$/   // 小括号的内容, 出现两次, 但是每次的值, 可以不同
        console.log(reg1.test('abcdef')) // true
        console.log(reg1.test('abcabc')) // true
        console.log(reg1.test('defabc')) // true
        console.log(reg1.test('defdef')) // true
         
        const reg2 = /^<(p|span)><\/\1>$/
        console.log(reg2.test('<span></span>')) // true
        console.log(reg2.test('<p></p>'))   // true
        console.log(reg2.test('<p></span>'))    // false
</script>

正则的标识符(修饰符)

书写在正则表达式的外面,用于描述整个正则表达式

  1. i
    忽略大小写
  2. g
    全局
<script>
       const reg = /^[a-c]$/
       console.log(reg.test('a'))  // true
       console.log(reg.test('A'))  // false

        
       const reg1 = /^[a-c]$/i // 忽略大小写
       console.log(reg1.test('a'))  // true
       console.log(reg1.test('A'))  // true
</script>

正则表达式的捕获

语法:正则.exec(字符串)

  1. 没有捕获到: 直接返回一个 null
  2. 捕获到
    2.1 没有小括号也没g 的情况, 永远捕获的都是下标0开始的第一个符合条件的
    2.2 没有小括号, 但是有修饰符g 的情况
    第一次捕获完成后, 第二次开始的时候, 会从第一次捕获结束的位置开始
    第三次开始的时候, 会从第二次捕获结束的位置开始
    当所有的匹配项都匹配完成后, 会返回一个 null
    当再次捕获的时候, 就从下标0重新开始
    2.3有小括号,下标0 还是我们正常捕获到的内容,从 下标1开始, 就是每个小括号捕获到的内容
<script>
        // 1. 没有捕获到
        const reg = /\d{3}/
        console.log(reg.exec('zxcvbnm'))    // null

        // 2.1 没有小括号, 也没有 g
        const reg = /\d{3}/
        console.log(reg.exec('z123xc456vb789nm000'))  //123
        console.log(reg.exec('z123xc456vb789nm000'))  //123
        console.log(reg.exec('z123xc456vb789nm000'))  //123

        // 2.2 有修饰符 g
        const reg = /\d{3}/g
        console.log(reg.exec('z123xc456vb789nm000'))    // 123
        console.log(reg.exec('z123xc456vb789nm000'))    // 456
        console.log(reg.exec('z123xc456vb789nm000'))    // 789
        console.log(reg.exec('z123xc456vb789nm000'))    // 000
        console.log(reg.exec('z123xc456vb789nm000'))    // null
        console.log(reg.exec('z123xc456vb789nm000'))    // 123

        // 2.3 有小括号
        const reg = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/
        const str = '我的身份证号是 411371200411081234'
        console.log(reg.exec(str))  //['411371200411081234', '4113', '71', '20', '04', '11', '08', '12', '34']

        const reg1 = /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2}|\dx)/
        const str1 = '我的身份证号是 41137120041108123x'  //['411371200411081234', '4113', '71', '20', '04', '11', '08', '12', '3x']
        console.log(reg1.exec(str1))
</script>

正则的两大特性

1.懒惰
正常捕获字符串的时候, 每次都从下标0开始
解决方式: 给正则添加一个修饰符 g
2.贪婪
每次在捕获的时候, 会尽可能的多捕获一些东西
解决方法: 在原有的修饰符后添加一个 ? 然后相当于开启非贪婪模式

<script>
         *      贪婪限定符
         *          *
         *          +
         *          ?
         *          {n,}
         *          {n,m}
         * 
         *      非贪婪限定符
         *          *?
         *          +?
         *          ??
         *          {n,}?
         *          {n,m}?
        const str = '<div class="box" id="box1"><span></span></div>'

        const reg = /<div.*>/   // 贪婪模式
        console.log(reg.exec(str))
        // ['<div class="box" id="box1"><span></span></div>']

        const reg1 = /<div.*?>/ // 非贪婪模式
        console.log(reg1.exec(str))
        //['<div class="box" id="box1">']
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS中的正则表达式 的相关文章

  • Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

    我需要的是两个 ng views 的功能 因为我不能 我想更改某些内容的innerHTML 并编译它 我遇到的问题是 当我再次更改内容时 我可以编译 但是 Angular 是否会自行删除绑定 或者我必须手动执行此操作 如果是这样 怎么办 编
  • 将鼠标悬停时的鼠标光标更改为锚状样式

    如果我将鼠标悬停在div鼠标光标将更改为 HTML 锚点中的光标 我怎样才能做到这一点 假设你的div has an id myDiv 将以下内容添加到您的 CSS 中 这cursor pointer指定光标应与用于锚点 超链接 的手形图标
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • Angular - CSS - 自定义类型=文件输入,如何使用按钮而不是标签?

    我制作了一个类型为 file 的自定义输入字段 因为我不喜欢默认的输入字段 为了实现这一目标 我做了
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 设置 cookie 时中断 JavaScript 执行

    当设置 cookie 时 是否可以始终中断浏览器开发人员工具中的 javascript 执行 无需显式设置 JS 断点 document cookie 在 html head 块的开头添加此代码片段效果很好
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • Javascript 假值(null、未定义、false、空字符串:“”或 '' 和 0)和比较(==)运算符 [重复]

    这个问题在这里已经有答案了 当我使用任何一个值时 null undefined false 0 in a if陈述 它总是被评估为谬误 false 另外 这些值的否定 null undefined false 0 in a if语句总是被评
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 使用 MongoDB 和 Nodejs 插入和查询日期

    我需要一些帮助在 mongodb 和 nodejs 中按日期查找记录 我将日期添加到抓取脚本中的 json 对象 如下所示 jsonObj last updated new Date 该对象被插入到 mongodb 中 我可以看到如下 la
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points

随机推荐

  • 想月入过万?不妨试试Python爬虫

    上班打工不给力 打工人需要PlanB 敢问当代年轻人谁没动过搞副业的念头呢 ChatGPT的横空出世 更是让担心饭碗不保的年轻人把搞副业提上了日程 在哪个城市搞副业最卷 副业在网上炒的火热 实际上能不能挣到钱 哪个副业才是能月入过万的 财富
  • 惊群效应及其解决方法

    这里写目录标题 惊群效应的概念 惊群效应的解决方法 在accept之前加锁 SO REUSEPORT 惊群效应的概念 惊群现象就是多进程 多线程 在同时阻塞等待同一个事件的时候 休眠状态 如果等待的这个事件发生 那么他就会唤醒等待的所有进程
  • Python游戏开发 unit05_Pygame物体移动和边界碰撞

    一 移动的本质 物体的位置变化 其实是坐标的变化 循环一次 刷新画布 重新绘制 二 边界的碰撞反弹 左边 x lt 0 右边 x gt 窗口宽度 物体宽度 上边 y lt 0 下边 y gt 窗口高度 物体高度 三 完整代码演示 impor
  • 总结Python的几点语言特性

    总结Python的几点语言特性 Python语言简洁 优雅 扩展性强 这些特点常被Python程序员挂在嘴边 确实也都是Python的特点 要讨论语言的特点或特性 可以得到很多不同的结论 有针对语言整体而言的特性 也有针对某一个应用领域的特
  • R语言解决三门问题(ggplot可视化)

    三门问题背景介绍 三门问题 Monty Hall problem 亦称为蒙提霍尔问题 蒙特霍问题或蒙提霍尔悖论 大致出自美国的电视游戏节目Let s Make a Deal 问题名字来自该节目的主持人蒙提 霍尔 Monty Hall 参赛者
  • 德鲁克《卓有成效的管理者》学习&读书-总结

    有幸学习了管理大师德鲁克先生的 卓有成效的管理者 帮助学习者理清了在理论和实践之间建立桥梁 使其生根落地 开花结果 管理不是常识 管理是个实践学科 要不断温习 不断与领导同事联接 交流碰撞 不断的在事上练 所谓卓有成效 就是不断让优秀的习惯
  • C#基础知识点总结(八)- 集合和特殊集合

    元素个数是动态的 就应使用集合类 大多数集合接口都可在System Collections和System Collections Generie名称空间中找到 详细可见 C 集合 Collection 菜鸟教程 runoob com 1 列
  • 机器学习<降维和度量学习>-matlab代码#3

    文章目录 测试样本 K近邻学习 K nearest Neighbor 降维 MDS算法 测试数据 MDS代码 主成分分析 PCA降维 核化线性降维 核化主成分分析 KPCA 流行学习 等度量映射Isometric Mapping 流行学习
  • 光照(二):镜面反射分量,Phong模型,Blinn模型

    标准光照方程的镜面反射分量指由光源直接经物体表面反射入眼睛的光线 1 Phong模型 标题镜面反射的Phong模型 所有向量均为单位向量 n为表面法向量 v指向观察者 l指向光源 对方向光源 l为定值 r为 镜像 向量 即l对n的镜像结果
  • 一文带你掌握抓包工具的使用-科来

    本篇彭老师将图文并茂教你如何使用抓包工具 并在文章最后教大家如何偷取FTP的用户名密码 一 安装 一口君为大家介绍一个非常好用的抓包工具 科来 下载地址 http www colasoft com cn 下载完毕 双击直接下一步即可安装 二
  • 二分查找+快排

    include
  • 10 大流行软件测试工具

    作者 Alexandra Gorobets 译者 侯晓辉 策划 万佳 01 前言 本文介绍了一些测试工具 它们可以帮助我们快速 有效地交付 Tricentis 主导的一项全球调查为我们提供了几个有关测试趋势的重要观察 趋势表明 团队倾向于使
  • 面板数据处理

    这里写自定义目录标题 1 面板数据录入 2 缩尾处理 3 描述性统计 4 相关性分析 5 多重共线性检验 6 设置虚拟变量 7 多元OLS回归 8 豪斯曼检验 在对面板数据进行回归之前 要先检验这个模型用固定好还是用随机效应好 现在普遍都用
  • Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)

    目录 一 下载及安装及环境配置 1 下载及安装 2 环境变量的配置 3 检测是否安装成功 4 配置Maven 1 更换本地仓库 2 配置镜像 二 集成eclipse完成案例 1 eclipse前期配置Maven 2 创建Maven工程 一
  • 二极管

    二极管 转载于 https www cnblogs com kexi p 10922119 html
  • 基于Lua的冒泡排序算法实现

    冒泡排序核心 比较相邻的元素 如果第一个比第二个大 就交换他们两个 对每一对相邻元素作同样的工作 从开始第一对到结尾的最后一对 这步做完后 最后的元素会是最大的数 针对所有的元素重复以上的步骤 除了最后一个 持续每次对越来越少的元素重复上面
  • win10安装ZED Python API以及解决python get_python_api.py报错

    Python 安装脚本位于 C Program Files x86 ZED SDK 中 运行如下命令 cd C Program Files x86 ZED SDK python get python api py 此时若出现如下报错 解决方
  • npm安装模块的 npm WARN root@1.0.0 No description 和 npm WARN root@1.0.0 No repository filed 的解决方法

    报错分析 是因为系统在给你配置package json文件的时候并没有帮你设置description字段和存储库字段 需要我们自己手动设置 直接用vim打开这个文件编辑 e 如图设置 description字段的内容无所谓 不为空即可 第二
  • c++ 构造函数、析构函数、拷贝构造函数、虚函数、纯虚函数

    今天主要讲拷贝构造函数 给构造函数 析构函数 虚函数 纯虚函数留个坑 拷贝构造函数 注意事项 1 如果类中有全局堆变量 那么就要考虑是否重写拷贝函数 因为默认的拷贝函数只是简单的赋值 会导致多个实例的堆变量共用同一个堆空间 class A
  • JS中的正则表达式

    正则 什么是正则 正则的常用方法 正则的元字符 普通元字符 边界元字符 正则的限定元字符 特殊元字符 重复元字符 正则的标识符 修饰符 正则表达式的捕获 正则的两大特性 什么是正则 正则就是一种规则的的表达式 书写一段规则 用于匹配一段字符