Javascript 不在代码标记之间解析BBCode

Javascript 不在代码标记之间解析BBCode,javascript,jquery,html,bbcode,Javascript,Jquery,Html,Bbcode,我读过关于这个话题的其他文章,但似乎没有一篇有用 好的,我正在编写我自己的BBCode解析器。现在我的问题是,我如何才能不解析[code]标记之间的BBCode?我真的不知道该怎么办。这是我当前的代码: $('#posttextareadisplay').text($('#textareainput').val()); var replacebbcode = $('#posttextareadisplay').html().replace(/(\[((\/?)(b|i|u|s|sup|s

我读过关于这个话题的其他文章,但似乎没有一篇有用

好的,我正在编写我自己的BBCode解析器。现在我的问题是,我如何才能不解析[code]标记之间的BBCode?我真的不知道该怎么办。这是我当前的代码:

$('#posttextareadisplay').text($('#textareainput').val());
    var replacebbcode = $('#posttextareadisplay').html().replace(/(\[((\/?)(b|i|u|s|sup|sub|code|quote))\])/gi, '<$2>')
                                                        .replace(/(\[(rule)\])/gi, '<hr>')
                                                        .replace(/(\[((align=)(left|center|right|justify))\])/gi, '<div align="$4">')
                                                        .replace(/(\[((\/)(align))\])/gi, '</div>')
                                                        .replace(/(\[((color=#)([0-9a-fA-F]{0,}))\])/gi, '<span style="color:#$4">')
                                                        .replace(/(\[((\/)(color))\])/gi, '</span>')
                                                        .replace(/(\[((size=)(1|2|3|4|5|6))\])/gi, '<font size="$4">')
                                                        .replace(/(\[((\/)(size))\])/gi, '</font>')
                                                        .replace(/(\[((link=)([a-zA-Z0-9._:\/\\+-]{0,}))\])/gi, '<a href="$4">')
                                                        .replace(/(\[((\/)(link))\])/gi, '</a>')
                                                        .replace(/((((http|https):\/\/)(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal))(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&amp;]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@\/?]*)?)(\s+|$))/gi, '<a href="$1">$1</a>');
    $('#posttextareadisplay').html(replacebbcode);
那么我该怎么做才能不解析[code]标记之间的代码呢?谢谢!!!:


另外,我正在使用JS/Jquery

一个解决方案是用相应的HTML实体替换BBCode特殊字符[and]&91;及九十三元;;以便以后不会对其进行分析:

input.replace(/\[code](.*?)\[\/code]/g,function(m,a){return '<code>'+a.replace(/[[\]]/g, function(t){return '&#9'+(t=='['?'1':'3')+';';})+'</code>';})

很抱歉,这是一个毫无帮助的自我插件,但我为PHP创建了一个[shortcode]库,它捕获了最外层的匹配项,所以您只需要禁用递归解析并按原样返回[code]内容。您可以在这里查看:。也许这会给你一点灵感嗯,但是我想自己编写代码。正确的解决方案是使用真正的正式结构化解析器。我已经记不清有多少基于regex的BBCode实现被我滥用来攻击或破坏网站。