On Mar 16, 9:44 pm, RobG <[email protected]> wrote:
> On Mar 17, 4:10 am, kangax <[email protected]> wrote:
>
> > On Mar 16, 1:13 pm, arkady <[email protected]> wrote:
>
> > > if trying to strip off the everything before the <body> and everything
> > > after </body>
>
> > response.replace(/.*(?=<body>)/, '').replace(/(<\/body>).*/, '$1');
>
> That seems a bit risky, the string may not always have lower case tag
> names and the body opening tag may include attributes. New lines in
I actually took OP's issue too literally; i.e. - "strip off everything
before the <body> and after </body>" : )
> the string might trip it up too. In any case, it doesn't work for me
> at all in Firefox 3 or IE 6.
Which string did you feed it with? dot doesn't match newlines, does
it? [\s\S] should match:
response.replace(/[\s\S]*(?=<body)/i, '');
>
> An alternative, provided all new lines are removed, is:
>
> response.match(/<body.*body>/i)[0];
>
> or
>
> response.replace(/\s/g,' ').match(/\<body.+body\>/i)[0];
>
> A sub-string version is:
>
> var start = response.toLowerCase().indexOf('<body');
> var end = response.toLowerCase().indexOf('</body>') + 7;
> var theBody = response.substring(start, end)
Obviously, string-based matching should be marginally faster than
regex, especially when that regex is based on a relatively slow
positive lookahead : )
var response = document.documentElement.innerHTML;
console.time(1);
for (var i=0; i<100; i++) {
var l = response.toLowerCase();
response.substring(l.indexOf('<body'), l.indexOf('</body>') + 7);
}
console.timeEnd(1);
var response = document.documentElement.innerHTML;
console.time(2);
for (var i=0; i<100; i++) {
response.replace(/[\s\S]*(?=<body)/i, '')
.replace(/(<\/body>)[\s\S]*/i, '$1');
}
console.timeEnd(2);
//1: 186ms
//2: 2664ms
--
kangax
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---