javascript - RegEx-如何解析 html 页面的模式(在 JavaScript 中)

标签 javascript html regex

我需要为模式解析 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/

相关文章:

java - 正则表达式在Java中获取两个标签之间的结果

java - 如何创建正则表达式以删除字符串开头的所有 `"0"`?

javascript - HTML5 data-* 属性类型转换字符串和数字

javascript - 使用文本框使用php表单更新MySQL数据库

javascript - 水平修复一些 HTML

regex - 使用正则表达式提取文本模式

javascript - 选择下拉选项后填充输入文本框时出现问题

javascript - 了解偏移方法的返回值

javascript - 如何删除用于打印的tinymce界面(仅显示innerhtml)

javascript - 如何在鼠标移开时隐藏 primefaces 菜单栏