【问题标题】:Using Javascript regular expression for filtering HTML使用 Javascript 正则表达式过滤 HTML
【发布时间】:2010-10-26 22:03:06
【问题描述】:

早安

有没有巧妙的方法使用 javascript 正则表达式来清理这个字符串:

var spans = "<SPAN><A href="javascript:sel.RemoveProductFromSelection('12372');"><IMG src="remove.gif" width=18> </A>Mirage - JOY</SPAN>
<SPAN><A href="javascript:sel.RemoveProductFromSelection('12427');"><IMG src="remove.gif" width=18> </A>Nikon - D40 </SPAN>
<SPAN><A href="javascript:sel.RemoveProductFromSelection('12438');"><IMG src="remove.gif" width=18> </A>Mitsuca - DS 6083 </SPAN>"

并生成这样的结果数组:

var filtered = ["12372","12427","12438"];

spans 变量中的源 html 字符串可以缩进也可以不缩进。

提前致谢

【问题讨论】:

  • 字符串最初是文档的一部分吗?当它们仍在 DOM 中时提取值可能会更容易。

标签: javascript html regex filtering


【解决方案1】:

我建议只匹配脚本部分。像这样的:

regex = /RemoveProductFromSelection\('(\d+)'\)/g;

while (match = regex.exec(spans)) {
   console.dir(match);
}

注意:我在这里使用console.dir() 以易于阅读的格式输出结果。 console.dir()是Firebug中的调试功能;如果您不使用 Firebug,则需要使用不同的方法来查看结果。

【讨论】:

    【解决方案2】:

    嗨,斯普德利,这是我目前得到的结果

    var filtered= spans.match(/\('(\d+)'\)/g);
    for (var k=0;k<filtered.length;k++){
       filtered[k] = filtered[k].match(/\d+/g);
       alert(filtered[k]);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2021-08-19
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多