Javascript 如何使用regex解析BBCode?

Javascript 如何使用regex解析BBCode?,javascript,regex,Javascript,Regex,我使用这个库()来解析JavaScript中的一些代码 我正在向库中添加一个[quote]标记,但我的正则表达式无法处理代码。当我试穿它的时候,它确实和我的文字相符 这是我的课文 [quote:16629e5e6b=\"newUser\"]It's coming down to a marketing challenge[/quote:16629e5e6b] 这是我的正则表达式 '\\[quote[\:0-9a-zA-Z=\\"]*\\](.+)\\[/quote[\:0-9a-zA-Z]*

我使用这个库()来解析JavaScript中的一些代码

我正在向库中添加一个[quote]标记,但我的正则表达式无法处理代码。当我试穿它的时候,它确实和我的文字相符

这是我的课文

 [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>'
“\\[quote[\:0-9a-zA-Z=\\\”]*\\](.+)\\[/quote[\:0-9a-zA-Z]*\\]:“$1”
下面是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>'
    });
让bbCode=newbbcodeparser({
“\\[br\]”:“
”, “\\[b\\](.+)\[/b\\]”:“$1”, “\\[i\\](.+)\[/i\\]”:“$1”, “\\[u\\]”(.+)\[/u\\]”:“$1”, “\\[u[\:a-zA-Z0-9]*?\]”(.+)\[/u[\:a-zA-Z0-9]*?\]”:“$1”, “\\[h1\\](.+)\[/h1\\]:”, “\\[h2\\](.+)\[/h2\\]:”, “\\[h3\\](.+)\[/h3\\]:”, “\\[h4\\](.+)\[/h4\\]:”, “\\[h5\\](.+)\[/h5\\]:”, “\\[h6\\](.+)\[/h6\\]:”, “\\[p\\](.+)\[/p\\]”:“$1

”, “\\[color=(.+)\\](.+)\\[/color\\]”:“$2”, “\\[size=([0-9]+)\]”(.+)\\[/size\\]”:“$2”, “\\[img\\](.+)\[/img\\]:”, “\\[img=(.+)\\]”:“”, “\\[email\\](.+)\[/email\\]”:“, “\\[电子邮件=(.+)\\](.+)\\[/email\\]]:”, “\\[url\\](.+)\[/url\\]:”, “\\[url=(.+)\\\\\\\;onclick\\](.+)\[/url\]”:”, “\\[url=(.+)\\](.+)\\[/url\\]]:”, “\\[a=(.+)\\](.+)\\[/a\\]]:”, “\\[list\\](.+)\[/list\\]”:“
    $1
”, “\\[\*\\](.+)\[/\\*\\]”:“
  • $1
  • ”, “\\[quote\\]”(.+)\[/quote\\]':“$1”, “\\[quote[\:0-9a-zA-Z=\\\”]*\\](.+)\\[/quote[\:0-9a-zA-Z]*\]]:“$1”, “\\[google\\](.+)\[/google\\]”:“ });

    感谢您的帮助

    参考的库文档建议使用
    bbCodeParser.create({…})
    提供自定义BBCodes,但是您的示例没有使用
    。create(…)
    。虽然我对图书馆不熟悉,但我很好奇你有没有试过?您当前的代码在console中是否有任何错误?你能不能把调用
    .parse(…)
    函数的方式/位置的一小段代码包含进去?@TylerRoper我正在更新这个库,默认情况下会包含一些其他自定义bbcode。我没有得到任何错误,它只是不符合我的标签。我添加了另外两个标记,它们工作得很好,只是引号我无法匹配。我相信这可能就是你要找的正则表达式:
    \[quote[\:0-9a-zA-Z=\\“]*\](.+)\[\/quote[\:0-9a-zA-Z]*\]
    。对于JavaScript,我可以想象它看起来是这样的:
    \[quote[\\:0-9a-zA-Z=\\\\\\\\\]*](.)
    @TylerRoper感谢您对正则表达式的帮助。成功了。