I have a JavaScript variable which holds an HTML page and due to the setup I need to extract everything between
This will not be possible with just a regular expression unless the HTML inside that div contains no other divs. Because what will happen with a pattern like Jeremy's is that it will match the first closing div tag, which wouldn't necessarily be the closing tag for the div#LiveArea element.
If you have control over the source HTML, you could insert a comment that you could use to match on for the correct "closing" location.
There are other javascript-only options, but they are each very kludgy or hacky
</div> tag.Let jQuery do the parsing for you:
$(page_html).find("#LiveArea").html();
I'm not sure I follow you when you say, "Javascript variable which holds an html page", but If you need to extract the HTML between such a div, you can use the element's innerHTML property.
var e = document.getElementById('LiveArea');
if(e) alert(e.innerHTML);
it seems that javascript doesn't support lookbehinds which is very disapointing, that would make this problem so much easier to solve.
(?<=<div id="LiveArea">).*(?=<\/div>)
here are some links that might help out tho.
although while discussing the issue of nested tags... that would be beyond the abilities of regex to solve so jeremy's solution is the best you can do with regex. and what is more they have to be on a single line... it won't even match if the the contents of the div are on seperate lines because there is no 's' flag for javascript. I think peter has given the answer for this one.