欢迎来到福编程网,本站提供各种互联网专业知识!

[正则表达式]贪婪模式与非贪婪模式

发布时间:2007-03-24 作者: 来源:转载
复制代码代码如下:/****author:site120**function:getscriptpartfromhtmldocument**/varloadJs=function(str,delayTime){vardelayTime=delayTime||100;varregExp_scriptTag=newRegExp("<\*script([^>]*)>([\\\S]*?)</\*script\*>","gi");varr
复制代码 代码如下:
/**
**author:site120
**function:getscriptpartfromhtmldocument
**/
varloadJs=function(str,delayTime)
{
vardelayTime=delayTime||100;
varregExp_scriptTag=newRegExp("<s*script([^>]*)>([sS]*?)</s*scripts*>","gi");
varregExp_scriptAttrib_src=newRegExp("s*src?s*=s*("([^"]+)"|'([^']+)'|s*([^s]+)s*)","gi");
vararr_scriptTag=null;
vararr_scriptAttib=null;
varscriptData="";
varjsList=newArray();
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]);
}
elseif(arr_scriptAttib[2])
{
jsList.push(arr_scriptAttib[2]);
}
else
{
jsList.push(arr_scriptAttib[1]);
}
}
scriptData+=(arr_scriptTag[2]);
}
for(vari=0;i<jsList.length;i++)
{
varscript=document.createElement("script");
script.src=jsList[i];
document.body.appendChild(script);
}
if(scriptData.length>0)
{
varfn="_siteFunction_"+newDate().getTime()+"_"+parseInt(Math.random()*10000)+"_120";
scriptData="var"+fn+"=function(){"+scriptData+"};"+fn+"();"
window.eval(scriptData);
}
}

这是用Js来处理正则表达式,原理与Java一样,
功能是读取一段网页源代码,并将它里面所有的script标签,截取并加载运行。
这里面的[sS]*?利用非贪婪模式来匹配最近script标签之间的所有代码。包括换行

相关推荐