【发布时间】:2010-11-26 08:06:01
【问题描述】:
我想在用户端使用 JavaScript 进行表单验证(也使用 jQuery)。我们的目标是删除嵌套的 bbCode [quote] 比第 2 级更深的标签。比如说,我们有这个文本:
[quote=SoundMAX][quote=Laplundik][quote=SoundMAX]
blahblahblah[/quote]
blahblah
[/quote]
blah[/quote]
然后得到这个:
[quote=SoundMAX][quote=Laplundik]
blahblah
[/quote]
blah[/quote]
我唯一的想法是将 [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回调函数参数,现在好用!我会解决的。
【问题讨论】:
-
Not 使用正则表达式:stackoverflow.com/questions/1732348/…
-
@idealmachine:这就是我要求另一种解决方案的原因。
标签: javascript jquery validation nested bbcode