首页 > 解决方案 > 如何使用正则表达式解析 BBCode?

问题描述

我正在使用这个库(https://github.com/DasRed/js-bbcode-parser)来解析 JavaScript 中的一些 bbcode。

我正在向库中添加一个 [quote] 标记,但我的正则表达式不适用于代码。当我在https://www.regextester.com/上尝试它时,它确实与我的文字相匹配。

这是我的文字

 [quote:16629e5e6b=\"newUser\"]It's coming down to a marketing challenge[/quote:16629e5e6b]

这是我的正则表达式

'\\[quote[\:0-9a-zA-Z=\\"]*\\](.+)\\[/quote[\:0-9a-zA-Z]*\\]': '<div class="quote">$1</div>'

这是带有JS代码的代码

let bbCode = new BbCodeParser({
      '\\[br\\]': '<br>',

      '\\[b\\](.+)\\[/b\\]': '<strong>$1</strong>',
      '\\[i\\](.+)\\[/i\\]': '<em>$1</em>',
      '\\[u\\](.+)\\[/u\\]': '<u>$1</u>',
      '\\[u[\:a-zA-Z0-9]*?\\](.+)\\[/u[\:a-zA-Z0-9]*?\\]': '<u>$1</u>',

      '\\[h1\\](.+)\\[/h1\\]': '<h1><a href="$1" name="$1">$1</a></h1>',
      '\\[h2\\](.+)\\[/h2\\]': '<h2><a href="$1" name="$1">$1</a></h2>',
      '\\[h3\\](.+)\\[/h3\\]': '<h3><a href="$1" name="$1">$1</a></h3>',
      '\\[h4\\](.+)\\[/h4\\]': '<h4><a href="$1" name="$1">$1</a></h4>',
      '\\[h5\\](.+)\\[/h5\\]': '<h5><a href="$1" name="$1">$1</a></h5>',
      '\\[h6\\](.+)\\[/h6\\]': '<h6><a href="$1" name="$1">$1</a></h6>',

      '\\[p\\](.+)\\[/p\\]': '<p>$1</p>',

      '\\[color=(.+)\\](.+)\\[/color\\]':   '<span style="color:$1">$2</span>',
      '\\[size=([0-9]+)\\](.+)\\[/size\\]': '<span style="font-size:$1px">$2</span>',

      '\\[img\\](.+)\\[/img\\]': '<img src="$1">',
      '\\[img=(.+)\\]':          '<img src="$1">',

      '\\[email\\](.+)\\[/email\\]':      '<a href="mailto:$1">$1</a>',
      '\\[email=(.+)\\](.+)\\[/email\\]': '<a href="mailto:$1">$2</a>',

      '\\[url\\](.+)\\[/url\\]':                 '<a href="$1">$1</a>',
      '\\[url=(.+)\\|onclick\\](.+)\[/url\]':    '<a onclick="$1">$2</a>',
      '\\[url=(.+)\starget=(.+)\\](.+)\[/url\]': '<a href="$1" target="$2">$3</a>',
      '\\[url=(.+)\\](.+)\\[/url\\]':            '<a href="$1">$2</a>',

      '\\[a=(.+)\\](.+)\\[/a\\]': '<a href="$1" name="$1">$2</a>',

      '\\[list\\](.+)\\[/list\\]': '<ul>$1</ul>',
      '\\[\*\\](.+)\\[/\\*\\]':    '<li>$1</li>',

      '\\[quote\\](.+)\\[/quote\\]': '<blockquote>$1</blockquote>',
      '\\[quote[\:0-9a-zA-Z=\\"]*\\](.+)\\[/quote[\:0-9a-zA-Z]*\\]': '<blockquote>$1</blockquote>',

      '\\[google\\](.+)\\[/google\\]': '<a href="https://www.google.com/search?q=$1" target="_blank">$1</a>'
    });

谢谢您的帮助

标签: javascriptregex

解决方案


推荐阅读