我已经阅读了有关此主题的其他帖子,但是它们似乎没有帮助。
好,所以我正在编码自己的bbcode解析器。现在我的问题是,如何不解析[代码]标签之间的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+_-.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(s+|$))/gi, '<a href="$1">$1</a>');
$('#posttextareadisplay').html(replacebbcode);
那么,我该怎么做才能在[代码]标签之间解析代码?谢谢你!!!:)
P.S。我正在使用js/jquery
一种解决方案将是用相应的HTML实体[
和]
替换BBCODE特殊字符[
和]
,以便以后不会解析它们:
input.replace(/[code](.*?)[/code]/g,function(m,a){return '<code>'+a.replace(/[[]]/g, function(t){return '	'+(t=='['?'1':'3')+';';})+'</code>';})