• js正则练习示例


    DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>js正则练习示例title>
      head>
      <body>
        <h1>打开控制台,看打印!h1>
        <script>
          var content = '这是个链接sh这是个链接'
          var b = /]+[\s]+)href=(\"([^<>"\']*)\"|\'([^<>"\']*)\')[^<>]*>/gi
    
          content = 'aadf[测试连接](http://909.pub)ofa急急急(()aadf[ha](http://asai.cc)ofa急急急(()'
          var bstr = '\\[([^\\]]*)\\]\\(([^\\)]*)\\)'
          b = new RegExp(bstr, 'i')
          var s = content.toLowerCase().match(b)
    
          console.log(666.10001, s)
          //得到链接地址
          for (var i = 0; i < s.length; i++) {
            var ss = s[i].toLowerCase().match(b)
            console.log(666.10002, ss, RegExp.$1, RegExp.$2, RegExp.$3)
            // alert(RegExp.$3)
          }
          var rule = [', '$2', '">', '$1', '']
    
          function mdtohtml(mdstr, rexstr, newtmp) {
            console.log(666.888, mdstr, rexstr, newtmp)
            var rexmd = new RegExp(rexstr, 'gi')
            var arr = mdstr.toLowerCase().match(rexmd)
            if (arr?.length) {
              for (var i = 0; i < arr.length; i++) {
                var vas = arr[i].toLowerCase().match(rexmd)
                let newstr = ''
                rule.forEach((el) => {
                  if (el === '$1') {
                    newstr += RegExp.$1
                  } else if (el === '$2') {
                    newstr += RegExp.$2
                  } else {
                    newstr += el
                  }
                })
                mdstr = mdstr.replace(arr[i], newstr)
                console.log(666.10008, arr, vas, newstr, RegExp.$1, RegExp.$2)
              }
            }
            return mdstr
          }
          console.log(666.30001, mdtohtml(content, bstr, rule))
        script>
      body>
    html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    (1)字符类

    []表示一个字符:
    [abc]: abc其中的一个字符。
    [a-z]: a-z中的任意一个字符。
    [0-9]: 0-9中任意一个数字。
    [a-zA-Z]: a-z或者A-Z中任意一个字符。

    (2)开头,结尾匹配

    表示开头,例如:"abc.*“,以“abc”开头的。
    表示结尾,例如: " . ∗ x y z 表示结尾,例如:".*xyz 表示结尾,例如:".xyz”,以“xyz”结尾的。

    (3)单个字符的其他表示

    . 任意一个字符。
    \d 数字:[0-9]
    \D 非数字:[^0-9]
    \s 空白字符:[ \t\n\x0B\f\r]
    \S 非空白字符:[^\s]
    \w 单词字符:[a-zA-Z_0-9]
    \W 非单词字符:[^\w]

    注意:“\小写字母”代表一类字符,“\大写字母”代表相反的字符。
    字符串中写“\” 代表 “\”。一个反斜杆表示转义,两个反斜杆代表一个反斜杠。

    (4)数量词

    X?:X出现0次或1次,?表示是否有一个。
    X*:X出现0次或多次,*表示任意个。
    X+:X出现1次或多次,+表示至少有一个。
    X{n}:X恰好出现n次。
    X{n,m}:X出现n-m次,n和m都包括了。

    (5)正则表达式的分组:

    捕获组通过数从左到右的开口括号计数编号。

    例如:表达((A)(B( C)))。
    有四个这样的团体:
    0 ((A)(B( C)))
    1 (A)(B( C))
    2 (A)
    3 (B( C))
    4 ( C)
    零组总是代表整个表达式。
    $1表示第1组的值。

  • 相关阅读:
    autopilot news
    useContext
    编码,Part 1:ASCII、汉字及 Unicode 标准
    编写第一个Qt程序和分析第一个Qt程序
    既定脉冲数的 编码器:一个脉冲扫描多长(一个脉冲走多远,距离是固定的。不随转动速度变动!!)
    curl认证过期
    小程序源码:云之道知识付费独立线传版V2-2.4.9
    系统架构设计师-第8章-系统质量属性与架构评估-学习笔记
    API接口获取商品评论
    计算机网络层(2)
  • 原文地址:https://blog.csdn.net/qq_25753445/article/details/132737395