簡體   English   中英

用於提取 html 標記之間的值的正則表達式

[英]Regex for extracting the value in between a html tag

我設法編寫了這個正則表達式來從td標簽中獲取內部 html,

<td[^>]*>(.*?)<\/td>

它工作正常。 除了,忽略匹配中的 td 標簽。 我只想得到innerHTML ,而不是outerHTML 你可以在這里找到我的問題的演示。

誰能幫我在td標簽之間獲取文本?

PS我在這里操作一個字符串而不是一個 html 元素。

甚至可以使用 DOM 來解析 HTML 字符串。 對於正則表達式來說,HTML 可能太棘手而無法保持高效。

 var s = 'this is a nice day<table><tr><td>aaaa <b>bold</b></td></tr><tr><td>bbbb</td></tr></table> here.'; var doc = document.createDocumentFragment(); var wrapper = document.createElement('myelt'); wrapper.innerHTML = s; doc.appendChild( wrapper ); arr = []; var n,walk=document.createTreeWalker(doc,NodeFilter.SHOW_ALL,null,false); while(n=walk.nextNode()) { if (n.nodeName.toUpperCase() === "TD") { arr.push(n.innerHTML); } } // See it works: console.log(arr); // or... for (var r = 0; r < arr.length; r++) { document.getElementById("r").innerHTML += arr[r] + "<br/>"; }
 <div id="r"/>

您實際上已經擁有所需的正則表達式。 這只是您與捕獲的混淆匹配。 您的正則表達式匹配外部 HTML,但它捕獲內部。 只需進行匹配即可獲得第一個捕獲組。 在這個 fiddle 中查看。

這是代碼

var s = '<table cellspacing="0px;" cellpadding="8px;"><tr><td align="right" style="padding-right:8px;line-height:18px;vertical-align:top;"><b>Import job summary</b></td><td align="left" style="max-width:300px;line-height:18px;vertical-align:top;"> 5 entries were imported successfully. 0 entries failed to import. </td></tr></table>',
    re = /<td[^>]*>(.*?)<\/td>/g,
    m = s.match(re),
    inner = ['No match'];

if (m.length>0) {
    // You have a capture
    inner = m;
}
document.write( 'Inner is:<br>' + inner.join('<br>') );

問候

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM