我需要为模式解析 html 页面。我假设匹配项已加载到数组中。然后我需要输出数组的内容。
<script language="JavaScript" type="text/javascript">
var adBookmarkletData=[
'<html><head><title>MYSA Yahoo! APT Debugger</title></head><body><center><div style=\"background:#ccc;color:#000;width:350px;text-align:left;padding:15px;border:2px #000;\">','<b>MYSA Yahoo! APT Debugger:</b><br /><hr />',
'<b>URL:</b> '+document.location.href+'<br />',
'<b>Pub ID:</b> '+window.yld_mgr.pub_id+'<br />',
'<b>Site Name:</b> '+window.yld_mgr.site_name+'<br />',
'<b>Content Topic ID List:</b> '+window.yld_mgr.content_topic_id_list+'<br />',
'<b>Site Section Name List:</b> '+window.yld_mgr.site_section_name_list+'<br />'
];
for(i in window.yld_mgr.slots){
adBookmarkletData.push('<b>Ad:</b> ('+i+')<b>Category:</b>('+window.yld_mgr.slots[i].cstm_content_cat_list+')<br />');
};
//Here my problem starts
var myRegExp = new RegExp("place_ad_here\('(.*?)'\)");
//Here my Problem ends
adBookmarkletData.push(myRegExp.exec(document.innerHTML));
adBookmarkletData.push('</div></center></body></html>');
function createAptDebugger(){
for (i in adBookmarkletData){
document.write(adBookmarkletData[i]);
}
};
void(createAptDebugger());
</script>
RegEx 模式适用于针对示例代码的在线测试器。但是这里的结果是空的。 我不知道如何将 RegEx 定向到 html 页面,然后从数组中输出它。
为清楚起见,html 正文中将包含这样的标签。
<script type="text/javascript">yld_mgr.place_ad_here('A728');</script>
<script type="text/javascript">yld_mgr.place_ad_here('ASPON120');</script>
<script type="text/javascript">yld_mgr.place_ad_here('ROLLOVER');</script>
<script type="text/javascript">yld_mgr.place_ad_here('A300');</script>
<script type="text/javascript">yld_mgr.place_ad_here('Middle1');</script>
<script type="text/javascript">yld_mgr.place_ad_here('B300');</script>
结果看起来像这样:
place_ad_here('A728')
place_ad_here('ASPON120')
place_ad_here('ROLLOVER')
place_ad_here('A300')
place_ad_here('Middle1')
place_ad_here('B300')
这正是我想要显示它们的方式。
提前致谢...
最佳答案
您的正则表达式中缺少 g 标志。这将允许多重匹配。
这就是你想要的
Array.prototype.push.apply( adBookmarkletData
, document.innerHTML.match( /place_ad_here\('[^']+'\)/g ) ) ;
string.match 如果您使用全局 g 标志,将返回所有匹配项的数组。 此外,由于 push 仅接受参数列表,因此使用 apply 来传递参数。
关于javascript - RegEx-如何解析 html 页面的模式(在 JavaScript 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/899343/