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

时间:2021-05-28

复制代码 代码如下:
/**
**author:site120
**function:getscriptpartfromhtmldocument
**/
varloadJs=function(str,delayTime)
{
vardelayTime=delayTime||100;
varregExp_scriptTag=newRegExp("<\\s*script([^>]*)>([\\s\\S]*?)</\\s*script\\s*>","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标签,截取并加载运行。
这里面的[\s\S]*?利用非贪婪模式来匹配最近script标签之间的所有代码。包括换行

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章