【问题标题】:Extracting a piece of code with Regex使用正则表达式提取一段代码
【发布时间】:2013-06-05 18:56:52
【问题描述】:

我需要关于正则表达式的帮助,我正在通过 ajax 读取包含以下代码的外部 URL:

<body>
originalAdvertiserLink='http://normaldomain.com/7cc86d4999/'<div id='beacon_d14503cb95' style='position: absolute; left: 0px; top: 0px; visibility: hidden;'><img src='http://URL.com/www/delivery/lg.php?bannerid=451&amp;campaignid=91&amp;zoneid=19&amp;loc=1&amp;cb=d14503cb95' width='0' height='0' alt='' style='width: 0px; height: 0px;' /></div>
</body>

我需要在 originalAdvertiserLink='' 中提取 URL,我已经使用此代码:

var e = /originalAdvertiserLink=\'([^\']*)/.exec(data);
openxOriginalLink = e[1];

但我还需要提取所有的div标签,我的意思是这部分:

<div id='beacon_d14503cb95' style='position: absolute; left: 0px; top: 0px; visibility: hidden;'><img src='http://URL.com/delivery/lg.php?bannerid=451&amp;campaignid=91&amp;zoneid=19&amp;loc=1&amp;cb=d14503cb95' width='0' height='0' alt='' style='width: 0px; height: 0px;' /></div>

我如何编写一个正则表达式来仅提取该部分,就像我对上面的 URL 所做的那样?

非常感谢

【问题讨论】:

  • 为什么不使用隐藏输入和data-* 属性?不要解析和正则表达式 HTML,它很糟糕而且很容易被破坏。
  • 只需将 HTML 解析为 DOM 并访问节点?
  • @Saymon,您只能回复当前活跃在此 cmets 链中的人。 Dystroy 不会看到您的评论。
  • 这段代码的目的是什么?当你从 URL 获取 ajax 响应时,会返回什么样的数据(html;json;xml)?
  • 修复现有代码比继续处理导致 HTML 正则表达式解析器的可怕代码要聪明得多。

标签: javascript regex


【解决方案1】:

类似于(如果您不想改变当前的做事方式 - cmets 不推荐):

var body = "<body>originalAdvertiserLink='http://normaldomain.com/7cc86d4999/'<div id='beacon_d14503cb95' style='position: absolute; left: 0px; top: 0px; visibility: hidden;'><img src='http://URL.com/www/delivery/lg.php?bannerid=451&amp;campaignid=91&amp;zoneid=19&amp;loc=1&amp;cb=d14503cb95' width='0' height='0' alt='' style='width: 0px; height: 0px;' /></div></body>";

var regex = /<div(.*?)div>/ig;
var match = regex.exec(body); 

if(match.length > 0)
{
    match =  match[0]; 
    alert(match);
}

JSFiddle:http://jsfiddle.net/56dKY/

【讨论】:

  • 感谢@meewoK,这是我为避免重新设计代码而寻找的。​​span>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 2020-10-30
  • 2018-03-17
  • 1970-01-01
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
相关资源
最近更新 更多