码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 正则表达式


    这里写目录标题

    • 定义方式
      • var reg=new RegExp('abc','gi')
      • var reg=/hello/
    • 方法
      • 正则.test(字符串)-----检查字符串中指定值,返回true/false
      • 正则.exec(字符串)-----找到指定值,返回数组,没有返回null
      • 字符串.match(正则)-----和exec一样但是可以匹配多个
      • 字符串.search(正则)-------找到第一个返回下标
        • 字符串.replace(正则,字符串/函数)-----替换,生成新的
      • g -----全局匹配(不加匹配一个就停了)
      • i 不区分大小写
      • s 匹配模式,忽略换行遇到换行就当成空白符
      • m 匹配模式,每一行单独处理
    • 【】/ ( )/ { }
    • \w \d \s \b \n
    • [a-z],[A-Z],[0-9]
    • + ,*,?
    • 禁止贪婪+和*后面跟?
    • ^ ,$
    • 断言 ?= ,?<=
      • 手机号后四位变成**
    • \ 转义字符
    • $& 匹配到的内容
    • 原子组
      • (?:com| org|cn)不保存这个原子组,不能使用\1
      • h标签替换p标签
      • 原子组起别名?< 名字>
    • 匹配中文
      • 文字高亮

    定义方式

    var reg=new RegExp(‘abc’,‘gi’)

    var reg=/hello/

    方法

    正则.test(字符串)-----检查字符串中指定值,返回true/false

    正则.exec(字符串)-----找到指定值,返回数组,没有返回null

     var str = 'qwertyuiopqwertyuiop'
        let reg = /o/g
        let count = 0;
        while ((reg.exec(str))) {
            count++
        }
        console.log(count) //2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    字符串.match(正则)-----和exec一样但是可以匹配多个

    字符串.search(正则)-------找到第一个返回下标

    字符串.replace(正则,字符串/函数)-----替换,生成新的

    str.replace(b, c => {
            return `<span style="color:red">${c}</span>`
        })
    
    • 1
    • 2
    • 3

    g -----全局匹配(不加匹配一个就停了)

    i 不区分大小写

    s 匹配模式,忽略换行遇到换行就当成空白符

    let str=`
    aaaaa
    bbbbb
    `
    str.match(/.+/s)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    m 匹配模式,每一行单独处理

    let str=`
    aaaaa
    bbbbb
    `
    str.match(/.+/gm) 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    【】/ ( )/ { }

    项目Value
    【12345】满足有1-5任意一个的【a-h】
    【^12345】不满足条件的
    (12 丨34 )12或者34,获取匹配的常跟丨
    {n,m}最少n,最多m,匹配次数{n},n次。(123){1,2}->123/123123

    \w \d \s \b \n

    项目Value
    \w字母数字下划线 [A-Za-z0-9]
    \W非字母数字下划线
    \d数字([\d\D]所有内容)
    \D非数字
    \s空的字符(空格,/n换行符)([\s\S]所有内容)
    \S非空字符
    \b单词边界 /on\b/ 以on结尾
    \B非单词边界
    \n换行符

    [a-z],[A-Z],[0-9]

    项目Value
    [a-z]在a-z区间
    [A-Z]在A-Z区间
    [0-9]在0-9区间

    + ,*,?

    项目Value
    +匹配一次或多次(贪婪模式)
    ×(*) 匹配0次或多次
    ?匹配0次或多次 ( / https?/ http或https)(/do(es)?/ ,do或does)
    var str = '718334085'
        console.log(str.match(/[0-9]/g)) //['7', '1', '8', '3', '3', '4', '0', '8', '5']
        console.log(str.match(/[0-9]+/g)) //'718334085'
    
    • 1
    • 2
    • 3

    禁止贪婪+和*后面跟?

    /hb+?/ //1
    /hb*?/ //0
    /hb??/  //0
    
    
    • 1
    • 2
    • 3
    • 4
    
    <body>
        <span>11111</span>
        <span>22222</span>
        <span>33333</span>
    </body>
    <script>
       var sp=document.querySelector('body')
       var reg=/<span>([\s\S]+?)<\/span>/gi //?禁止贪婪
       sp.innerHTML.replace(reg,(v,p1)=>{
    return `<h4>${p1}</h4>`
       })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ^ ,$

    项目Value
    ^在[ ]里是不满足条件的,在外面是以^…开头的
    $结束

    断言 ?= ,?<=

    var str=/hell(?=o)/g
    //hell后面带o的
    var str=/(?<=h)ello/g
    //判断前面的
    
    • 1
    • 2
    • 3
    • 4

    手机号后四位变成**

    var str='13719863466'
    var reg=/(?<=\d{7})\d{4}/ig
    str.replace(res,(a)=>{
    	return *.repeat(4)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5

    \ 转义字符

    当一个字符存在多个含义的时候就需要转义

    项目Value
    . 点第一个含义除换行外普通字符,第二个含义字符串点
    var str='http://www.baidu.com'
    (/http?:\/\/\w+\.\w+\.\w+/)
    
    • 1
    • 2

    $& 匹配到的内容

    let hd='qq345q'
    hd.replace(/345/,'$&') //qq345q
    hd.replace(/345/,'$&0') //qq3450q
    
    • 1
    • 2
    • 3

    原子组

    用()包起来,拥有自己的组编号

    let str='2002-03-22'
    str.match(/^\d{4}([\/-])\d{2}([\/-])\d{2}$/)
    str.match(/^\d{4}([\/-])\d{2}\1\d{2}$/)//或者这么写
    //[\/-]原子表 2002/03/22或者用- 链接都可以
    //\1代表用前面的原子表匹配模式
    
    • 1
    • 2
    • 3
    • 4
    • 5

    (?:com| org|cn)不保存这个原子组,不能使用\1

    h标签替换p标签

      var a = `
        <h1>123</h1>
        <h2>234</h2>
        `
        var b = a.replace(/<(h[1-6])>([\s\S]+)<\/\1>/gi, (p0, p1, p2) => { //p
            return `<p>${p2}</p>` //提取第二个原子组的内容
        })
        console.log(b) // <p>123</p>  <p>234</p>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    原子组起别名?< 名字>

      var reg=/<span>(?<con>[\s\S]+?)<\/span>/gi //?禁止贪婪
       sp.innerHTML.replace(reg,'<h2>$<con></h2>'
       )
    
    • 1
    • 2
    • 3

    匹配中文

    let a='dyyui344,加油'
    a.match(/\p{sc=Han}/gu)
    
    • 1
    • 2

    文字高亮

    <body>
        <div class="box">345v4435tvgrr</div>
    </body>
    <script>
        var a = prompt('请输入要查询的,可以用正则')
        var b = new RegExp(a, 'g')
        var box = document.querySelector('.box')
        box.innerHTML = box.innerHTML.replace(b, c => {
            return `<span style="color:red">${c}</span>`
        })
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    《最新出炉》系列入门篇-Python+Playwright自动化测试-43-分页测试
    吃透这份“腾讯限量版”Java架构笔记,要个40k不过分吧
    [一篇读懂]C语言十讲:单链表的新建、查找
    1、计算机组成与体系结构
    抖音矩阵系统开发的技术框架解析,支持OEM
    Java基础知识&面试题总结(下)
    环境配置--idea练习java实现一键运行
    dmsetup命令
    亚马逊云科技多项新功能与服务,助力各种规模的组织拥抱生成式 AI
    JavaScript 18 JavaScript 字符串
  • 原文地址:https://blog.csdn.net/weixin_51109349/article/details/125479484
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号