поидее если есть код тестов, которые оба они проходят то тот который короче или проще,
а если в общем, то первый зависает если найдёт закрывающий тэг до открывающего, ещё бывает js в событиях всяких onevent
можно ещё сделать посимвольно:
Код:
function here(substr,instr:string; atpos:integer):boolean;
var i:integer;
begin
result := false;
if length(instr) < atpos+length(substr)-1 then exit; //на всякий
for i := 1 to length(substr) do
if instr[atpos+i - 1] <> substr[i] then exit;
result := true;
end;
function hereAtleft(substr,instr:string; atpos:integer):boolean;
begin
result := here(substr,instr,atpos - length(substr));
end;
function DelJS(const inCode:string):string;
const OPENTAG = '<script'; CLOSETAG = '</script>';
var i:integer; script:boolean;
begin
result := '';
script := false;
for i := 1 to length(incode) do begin
if here(OPENTAG,incode,i) then script := true
else if hereAtleft(CLOSETAG,incode,i) then script := false;
if not script then result := result + incode[i];
end
end;
{
кстати из <<script></script>script>123</script> делает <script>123</script>
поэтому для удовлетворения паранои можно ещё в цикле запускать
}