我想在用户端使用 JavaScript 进行表单验证(也使用 jQuery)。目标是删除[quote]
比第 2 级更深的嵌套 bbCode 标签。比如说,我们有以下文本:
[quote=SoundMAX][quote=Laplundik][quote=SoundMAX]
blahblahblah[/quote]
blahblah
[/quote]
blah[/quote]
得到这个:
[quote=SoundMAX][quote=Laplundik]
blahblah
[/quote]
blah[/quote]
我唯一的想法是用 .replace[quote]
替换<div>
,然后创建 DOM 对象并使用 jQuery 删除任何比 2 更深的内容,然后将所有内容向后解析为 bbCode。但是这个解决方案似乎太复杂了,还有更优雅的吗?
编辑:
感谢您提供不错的解决方案。根据darioo的回答,我这样做了:
var text=$('#edit-privatemsgbody').val();
var tmp=[];
var level=0;
for (var i=0,l=text.length;i<l;i++){
if(text[i]=='['&&text[i+1]=='q') level++;
if(text[i-6]=='q'&&text[i-7]=='/'&&text[i-8]=='[') level--;
if(level<3) tmp.push(text[i]);
}
alert(tmp.join(''));
哪个工作得很好。
但是idealmachine的解决方案就像是闪现。之前不知道replace回调函数参数,现在好用!我会解决的。