繁体   English   中英

我的正则表达式有什么问题?

[英]what's wrong with my regex expression?

我有一个字符串trackingObj ,其存储的信息的集合(HTML代码,但也有像许多字符。 \\r\\n的代码内,例如: <div id=\\"MainBox\\">\\r\\n

我想从该巨型字符串中获取以下内容:

<td id='theTrackInfo'><strong><span id='HeaderNum'>aaa</span><span id='HeaderFrom'> <br>bbb</span><span id='HeaderDes'> <br>ccc</span><span id='HeaderItem'> <br>ddd</span><span id='HeaderState'> <br>eee</span><span id='HeaderADate'><br>fff</span><span id='HeaderSign'><br>ggg</span><DIV id='HeaderExtra'> </DIV></strong></td>

我尝试使用html()将整个字符串附加到DOM,但是其中包含非法字符,因此无法使用jQuery执行DOM操作。

只是考虑使用纯正则表达式来获取我需要的东西。 我尝试了以下操作:

var Info = new RegExp("<td>\sid='theTrackInfo'>[\s\S]*?\/td>", "g");
var InfoHtml = theTrackInfo.exec(trackingObj);
console.log(InfoHtml);

我也尝试过:

var InfoHtml = trackingObj.match(/<td>\sid='theTrackInfo'>[\s\S]*?<\/td>/gi);
console.log(InfoHtml);

不起作用。 我缺少什么?

================= UPDATE ==========================

大家好,谢谢您的回答。

我尝试使用DOMParser使其最终工作:

var parser = new DOMParser();
var html = parser.parseFromString(ProcessedStrings,"text/html");
var info = $(html).find("#theTrackInfo");
console.log($(info).html());

有人可能说jQuery应该做同样的事情。 问题是,通过使用ajax调用来检索trackingObj ,并且当我尝试使用jQuery追加方法将其追加到DOM时,在控制台中,它说:“意外的令牌非法”

但是我仍然会选择一个正则表达式答案作为该问题的正确答案。

=================更新2 =============

嗨,我检查了汤姆·费内奇(Tom Fenech)的方法,它也对我有用。 该错误可能是由于尝试将代码附加到div引起的。 与jQuery本身无关。

如果您已经在使用jQuery,则可以将字符串解析为HTML,然后提取您感兴趣的部分:

var trackingObj = "<table><tbody><tr><td id='theTrackInfo'><strong><span id='HeaderNum'>aaa</span><span id='HeaderFrom'> <br>bbb</span><span id='HeaderDes'> <br>ccc</span><span id='HeaderItem'> <br>ddd</span><span id='HeaderState'> <br>eee</span><span id='HeaderADate'><br>fff</span><span id='HeaderSign'><br>ggg</span><DIV id='HeaderExtra'> </DIV></strong></td><tr></tbody><table>";

var html = $.parseHTML(trackingObj);
var td = $(html).find('#theTrackInfo').get()[0]; // get native DOM element
console.log(td.outerHTML);

几个问题:

首先,“ id”在开始标记内...因此,您应该进行以下尝试:

var Info = new RegExp("<td\sid='theTrackInfo'>[\s\S]*?<\/td>", "g");

其次,如果您在其中嵌入了另一个表,它将无法获得正确的数据。

我会考虑使用像HTML Agility Pack这样的工具来获取您想要的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM