我正在为phpBB3论坛创建一个小javscript,它计算你输入的字符数。 但我需要删除特殊字符(我设法这样做。)和一个BBcode:引用
我的问题在于引用......以及我对正则表达不太了解的事实。
这是我到目前为止所做的事情,但我被搁浅了:
var text = '';
var char = 0;
text = $('textarea').val();
text = text.replace(/[&\/\\#,+()$~%.'":*?<>{}!?(\r\n|\n|\r)]/gm, '');
char = text.length;
$('div').text(char);
$('textarea').bind('input propertychange', function () {
text = $(this).val();
text = text.replace(/[&\/\\#,+()$~%.'":*?<>{}!?\-\–_;(\r\n|\n|\r)]/gm, '');
char = text.length;
$('div').text(char);
});
答案 0 :(得分:1)
你最好为此编写一个解析器,但是如果你想尝试使用正则表达式,this应该可以做到这一点:
text = $('textarea').val();
while (text.match(/\[quote.*\[\/quote\]/i) != null) {
//remove the least inside the innermost found quote tags
text = text.replace(/^(.*)\[quote.*?\[\/quote\](.*)$/gmi, '\$1\$2');
}
// now strip anything non-character
text = text.replace(/[^a-z0-9]/gmi, '');
答案 1 :(得分:0)
我不确定这是否可行,但我认为你可以用这样的正则表达式替换所有的bbcodes:
var withoutBBCodes = message.replace(/\[[^\]]*\]/g,"");
它只是替换[any char != ']' goes here]
var withoutBBQuote = message.replace(/\[[\/]*quote[^\]]*\]/g,"");
编辑:好的,您还希望删除引用的内容:
while (message.indexOf("[quote") != -1) {
message = message.replace(/\[quote[^\]]*\]((?!\[[[\/]*quote).)*\[\/quote\]/g,"");
}
我知道你已经得到了一个解决方案,感谢@guido,但不想让这个答案错了。