簡體   English   中英

正則表達式-匹配HTML代碼的多行塊

[英]Regex - Match multiline blocks of HTML code

我的正則表達式有問題。 我需要匹配HTML塊。

示例塊在這里:

<tr class="tr-list " data-id="XX">
    <td class="ip-img"><div class="gun-icon"></div><img src="https://example.com/images/stories/HCP/HCP_5.jpg"/></td>
    <td class="ip-name ip-sort">Hotel Complex Project</td>
    <td class="ip-price ip-sort">297.00</td>
    <td class="ip-earnings ip-sort">43</td>
    <td class="ip-shares ip-sort">86</td>
    <td class="ip-status {'sorter':'currency'}"><img
            src="/img/assets/arrow1.png" title="0.989990234375"/></td>
    <td class="ip-blank-right"></td>
</tr>

這些HTML塊中的每個塊都應分別匹配,然后我要從中提取其他數據(例如ip-name,ip-price,ip-earnings ..)。

但是我當前的正則表達式會匹配所有內容,直到“(?=)”部分不再成立為止: http : //regexhero.net/tester/ ?id=2b491d15- ee83-4dc7-8fe9-62e624945dcf

我需要更改以使每個塊都匹配嗎?

問候! :)

PS .:希望我的意思是可以理解的...

這應該獲得所有tr行:

<tr class="tr-list[\s\S]+?</tr>

這將獲得所有tr行,其中各列具有匹配的組:

<tr class="tr-list[^<]*?<td class="ip-img">(.*?)</td>\s*<td class="ip-name.*?">(.*?)</td>\s*<td class="ip-price.*?">(.*?)</td>\s*<td class="ip-earnings.*?">(.*?)</td>\s*<td class="ip-shares.*?">(.*?)</td>\s*<td class="ip-status.*?">([\s\S]*?)</td>[\s\S]+?</tr>

嵌套的html將需要來自正則表達式匹配的嵌套數組,這可以使用jquery完成,也可以使用正則表達式手動生成樹

此正則表達式將捕獲未自我封閉的整個html塊:

var hmtlText="<div bar='baz'>foo</foo>";
var pattern = /<([\w]+)( (( +)?[\w]+=['"](\w+)?['"])?)+( )?(\/)?>((([\t\n\r\s]+)?)+(((.)+)?)+((\10)?)+)+?<\/(\1)>/igm;
console.log((pattern.test(htmlText) ? 'valid' : 'invalid') + ' html block');

暫無
暫無

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

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