[正则表达式]贪婪模式与非贪婪模式
程序员文章站
2022-06-22 15:29:13
复制代码 代码如下:/** ** author: site120 &n...
复制代码 代码如下:
/**
** author: site120
** function : get script part from html document
**/
var loadjs = function(str , delaytime)
{
var delaytime = delaytime || 100;
var regexp_scripttag = new regexp("<\\s*script([^>]*)>([\\s\\s]*?)</\\s*script\\s*>" , "gi");
var regexp_scriptattrib_src = new regexp("\\s*src?\\s*=\\s*(\"([^\"]+)\"|\'([^\']+)\'|\\s*([^\\s]+)\\s*)" , "gi");
var arr_scripttag = null;
var arr_scriptattib = null;
var scriptdata = "";
var jslist = new array();
while ((arr_scripttag=regexp_scripttag.exec(str)) != null)
{
while ((arr_scriptattib=regexp_scriptattrib_src.exec(arr_scripttag[1])) != null)
{
if (arr_scriptattib[3])
{
jslist.push(arr_scriptattib[3]);
}
else if (arr_scriptattib[2])
{
jslist.push(arr_scriptattib[2]);
}
else
{
jslist.push(arr_scriptattib[1]);
}
}
scriptdata += (arr_scripttag[2]);
}
for (var i=0; i<jslist.length; i++)
{
var script = document.createelement("script");
script.src = jslist[i];
document.body.appendchild(script);
}
if (scriptdata.length > 0)
{
var fn = "_sitefunction_" + new date().gettime() + "_" + parseint(math.random()*10000) + "_120";
scriptdata = " var " + fn + " = function(){ " + scriptdata + " }; "+fn+"();"
window.eval(scriptdata);
}
}
这是用js来处理正则表达式,原理与java一样,
功能是读取一段网页源代码,并将它里面所有的script标签,截取并加载运行。
这里面的[\s\s]*?利用非贪婪模式来匹配最近script标签之间的所有代码。包括换行