JavaScript로 사용자 측에서 양식 유효성 검사를 수행하고 싶습니다 (jQuery도 사용됨). 목표는 레벨 2 말보다 [quote]
태그 깊은 중첩의 BBCode를 제거하는 것입니다, 우리는이 텍스트가 :JavaScript : 중첩 된 [견적]
[quote=SoundMAX][quote=Laplundik][quote=SoundMAX]
blahblahblah[/quote]
blahblah
[/quote]
blah[/quote]
을 그리고이 얻을 :
[quote=SoundMAX][quote=Laplundik]
blahblah
[/quote]
blah[/quote]
내 유일한 생각은 <div>
와 [quote]
을 .replace하는 것입니다, 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의 솔루션은 플래시와 같았습니다. 이전에 콜백 함수 매개 변수를 교체하는 방법을 알지 못했지만, 이제는 편리합니다! 나는 그걸로 해결할거야.
* 정규식 포함 : http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – PleaseStand
@idealmachine : 그 이유는 다른 해결책을 요구했습니다. –