技术开发 频道

一种新的SRC捕获


【IT168技术文档】

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>发现了一种新的SRC捕获,利用否定预查完成</title> </head> <body> <textarea id="wc" style="width:500px; height:100px;"> <img alt="var src='1'" src="'1.px'" width> <img alt="var src='1'" src='"1.px"' width> <img alt="var s='><img src=1>'" src=1.px> <img alt="var src='1'" src=1.px width> <img alt="var src='1'" src=> <img alt="var src='1'" src= width> <img alt="var src='1'" src="" width> <img alt="var src='1'" src='' width> </textarea> <script type="text/javascript"> /* 不过效率的话,取$1$2$3明显优于取$2,但是仅高%14-%8左右。。。 /<img\b(?:"[^"]*"|'[^']*'|[^"'>])+?src=(['"]?)([^\s>"']*(?:(?!\1).[^\s>"']*)*)\1(?:"[^"]*"|'[^']*'|[^"'>])*>/ig; //严谨模式 取$2 /<img\b(?:"[^"]*"|'[^']*'|[^"'>])+?src=(?:"([^"]*)"|'([^']*)'|([^"'\s>]*))(?:"[^"]*"|'[^']*'|[^"'>])*>/ig; //严谨模式 取$1$2$3 /<img[^>]*?src=(['"]?)([^\s>"']*(?:(?!\1).[^\s>"']*)*)\1[^>]*>/ig; //简单模式 取$2 /<img\b[^>]*?src=(?:"([^"]*)"|'([^']*)'|([^"'\s>]*))[^>]*>/ig; //简单模式 取$1$2$3 - -,在简单的话,就不能保证正确的捕获到src中的内容了吧。(3引号情况) */ var r = /<img\b(?:"[^"]*"|'[^']*'|[^"'>])+?src=(['"]?)([^\s>"']*(?:(?!\1).[^\s>"']*)*)\1(?:"[^"]*"|'[^']*'|[^"'>])*>/ig; //严谨模式 取$2 document.getElementById('wc').value.replace(r, function (l, $1, $2) { alert(l + '\nsrc = |' + $2 + '|'); }); </script> </body> </html>
0
相关文章