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)字符类

[]表示一个字符:
[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组的值。

你可能感兴趣的:(javascript,开发语言,ecmascript)